凯发app-凯发天生赢家 >关于创龙 > 新闻资讯 > 技术文章
联系凯发app
contact us公司总机:020-8998-6280
技术热线:020-3893-9437
技术邮箱:support@tronlong.com
销售邮箱:sales@tronlong.com
如何用tms320c6678处理器进行openmp多核通信案例
2021/01/28
如何用tms320c6678处理器进行openmp多核通信案例-凯发app
本文主要介绍tms320c6678处理器开发中比较常用的多核通信方式:openmp,主要基于创龙科技tl6678-easyevm评估板进行演示。
图1 tl6678-easyevm评估板
tl6678-easyevm是一款基于ti keystone架构c6000系列tms320c6678八核c66x定点/浮点高性能处理器设计的高端多核dsp评估板,由核心板与底板组成。核心板经过专业的pcb layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
评估板接口资源丰富,引出双路千兆网口、srio、pcie等高速通信接口,方便用户快速进行产品方案评估与技术预研。
开发案例主要包括:ø
(1) 裸机开发案例
(2) rtos(sys/bios)开发案例
(3) ipc、openmp多核开发案例
(4) srio、pcie、双千兆网口开发案例
(5) 图像处理开发案例
(6) dsp算法开发案例
(7) 串口、网络远程升级开发案例
案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点获取。
2.1 openmp简介
openmp是一种多核开发软件框架,其主要特性如下:
(1) 可跨平台使用,代码兼容性强。
(2) 以共享内存为通信基础。
(3) 支持c/c 以及fortran语言。
(4) 一般基于sys/bios运行。
图2
2.2 基本语法
#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]
{
...
}
表1
指令 |
说明 |
parallel |
开始并行执行语句 |
for |
在多个线程中并行执行for循环 |
sections |
包含多个可并行执行的sectone结构体 |
single |
单线程执行 |
master |
主线程执行 |
critical |
任意时刻仅可被单个线程执行 |
barrier |
指定屏障,用于同步所有线程 |
taskwait |
等待子线程完成 |
atomic |
确保指定内存位置执行原子更新操作 |
flush |
使线程当前内存数据与实际内存数据一致 |
ordered |
并行执行的for循环将按循环体变量顺序执行 |
threadprivate |
指定变量为本地存储 |
表2
子句 |
说明 |
default |
控制parallel或task结构体中变量数据的共享属性 |
shared |
parallel或task结构中,一个或多个变量为共享变量 |
private |
一个或多个变量为本地变量 |
firstprivate |
一个或多个变量为本地变量,且变量值为并行结构执行前的值 |
lastprivate |
一个或多个变量为本地变量,且变量值为并行结构执行后的值 |
reduction |
一个或多个变量为本地变量,但变量值将根据不同的运算符来决定,执行完成后变量值将被更新 |
copyin |
使线程本地变量值与主线程变量值相同 |
copyprivate |
使属于parallel区域的变量值在不同线程中相同 |
schedule |
设置for循环并行执行方式:dynamic、guided、runtime和static |
num_threads |
线程数目 |
if |
并行语句执行条件 |
nowait |
忽略线程同步等待 |
以裸机的omp_matavec案例为例,使用场景的概要流程图如下。
c66xx_0核心创建主线程,通过openmp框架加载matvec算法至c66xx_0~c66xx_7核心进行并行运算,从而减少c66xx_0核心负载,并可加快运算速度。
图3
2.3 代码分析
以裸机的omp_matavec案例为例进行代码分析,见图中注释。
图4
现可向厂家免费申请tl6678-easyevm评估板进行快速评估,免费哦!
c6678 k7视频采集处理方案
图5
fpga dsp的高速ad采集处理开发详解
图6
更多案例详情或建议,欢迎留言与我沟通了解。