电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2783|回复: 3
收起左侧

TMS320C6678处理器如何进行OpenMP多核通信案例

[复制链接]

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-3-26 10:24:16 | 显示全部楼层 |阅读模式
本文主要介绍TMS320C6678处理器开发中比较常用的多核通信方式:OpenMP,主要基于创龙科技TL6678-EasyEVM评估板进行演示。​6 y% X9 ^' K5 b( t& i0 B5 ]- X- v

( d/ X5 V; f. o2 J# h% u图1 TL6678-EasyEVM评估板
/ _8 _( T) ?$ A+ Y6 K  g  A% L8 D$ Y8 W
TL6678-EasyEVM是一款基于ti KeyStone架构c6000系列TMS320C6678八核C66x定点/浮点高性能处理器设计的高端多核DSP评估板,由核心板与底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。3 w& ?( h) b0 p  ^+ S( w5 R' A
评估板接口资源丰富,引出双路千兆网口、SRIO、PCIe等高速通信接口,方便用户快速进行产品方案评估与技术预研。/ t$ C" g1 D) ?7 @
5 `" b2 c/ g6 P+ ^# }0 N
开发案例主要包括:+ i- f1 W# e# n6 g* w

' b( b* @4 D% l2 ^7 d/ L(1) 裸机开发案例1 F4 u& b$ y- G% s3 u3 ]" n& }
(2) RTOS(SYS/BIOS)开发案例
) D) u2 [6 j' J3 J$ ^(3) IPC、OpenMP多核开发案例; x$ }( F3 }8 z
(4) SRIO、PCIe、双千兆网口开发案例
4 T2 V2 Z( P- p5 m4 f/ C(5) 图像处理开发案例
0 K1 g. H$ b3 {( u( B, ~(6) DSP算法开发案例/ y! b6 P) T8 `3 t) ]  |6 \. ], R
(7) 串口、网络远程升级开发案例
! G8 y1 X! B% I( P3 p( z& }案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点site.tronlong.com/pfdownload获取。1 ?5 g% d2 D6 e% Z
- A7 P2 ~6 T( ~8 E; K

4 k7 g, \$ ~0 E2 K2.1 OpenMP简介
$ C! w+ k# H/ i8 {
  t0 X. E: ], L1 TOpenMP是一种多核开发软件框架,其主要特性如下:
( p1 c- s, U* ]# \; U+ Q4 b+ `# H/ s0 ]
(1) 可跨平台使用,代码兼容性强。
6 Q2 W# U" ]/ j( l2 M  ?* ](2) 以共享内存为通信基础。% i. M! L4 h7 ^4 Q) u
(3) 支持C/C++以及Fortran语言。8 x1 S6 H% h" p
(4) 一般基于SYS/BIOS运行。* _4 v( ]1 F" b

5 [' I; t* e6 ^
, Z! W: x' p1 T3 s) U4 f6 X​
) X9 W9 C. D9 ^图2& T/ h4 S7 g2 \# M

/ K+ x' e. l4 ^5 P% a; L5 p' ^3 F( Y! r4 B5 u  W+ K+ U" ^: j8 p
2.2 基本语法
/ u. l2 f0 I, i( K) J6 F#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]' M4 b0 I$ i9 l
{" Z; m& C" K" K* G2 b# E2 |
...
6 g5 g3 a7 I7 L8 g8 J0 b! |) ?}- ^& v9 Q4 e% r- o

0 J; w( s3 I8 p0 S表15 E1 P* x' s( \' m
指令
1 Z3 y1 [. ^1 A' P1 B/ Q* E
说明: L4 p. K, v/ G8 C9 y" `& e
parallel* U; m7 @. g7 L  Y) n
开始并行执行语句
1 o" X- G+ d2 h3 ~2 d
for
" h6 ^# [2 G9 Y! f" d1 T9 d% ]9 _
在多个线程中并行执行for循环1 a+ Z% p- y- J1 @
sections# ^$ }! q, R) X! L
包含多个可并行执行的sectone结构体- z2 }  }* V* l7 d' d  O6 c* `! `
single% q8 m) Y& l# o" l8 C' x# t$ ^, R+ b/ G
单线程执行! F, L5 R7 P! Z. k2 q/ Q# H' p" a
master7 T  s3 T' J4 Y: g$ y
主线程执行- E0 l  ~5 I& I
critical% O3 o6 S$ E* ?* m$ M. ^2 C$ q. V6 ~
任意时刻仅可被单个线程执行
- Q9 o0 ^8 j* J1 h. P1 S0 c* h# b
barrier
% s* f, K8 g# M4 H6 g) u
指定屏障,用于同步所有线程, `+ A6 k/ H, x" K
taskwait
; x& Z" T" W+ b: {2 A2 K
等待子线程完成
' I9 m: V, e; W# Y( H+ S) Z( s
atomic  L8 C5 C! _; n  {& Y9 J6 Y8 P8 w
确保指定内存位置执行原子更新操作/ s* c2 S. `* ]
flush
& Z% L2 {! j8 s
使线程当前内存数据与实际内存数据一致& R) L& {" a' D' Q; K
ordered
% ?( n, x) g" X, @5 x
并行执行的for循环将按循环体变量顺序执行
% L6 Q5 P0 q' N7 v# I$ d6 Q
threadprivate
% q. ^* o5 i: H/ E
指定变量为本地存储0 v5 A+ b2 l. n8 q

. B  r4 g& f3 [% E% @. b' ~表2
9 L9 z8 ~" Z" }2 n
子句
- E0 b! W* V5 |4 y4 t
说明, h' {1 o, Z6 _7 j
default
$ q* D4 x3 B6 B% R4 q% `! n
控制parallel或task结构体中变量数据的共享属性: `# Z6 ?- [, O" ]
shared
  H  q; ]  r* a% u$ M
parallel或task结构中,一个或多个变量为共享变量* B' K8 y& G6 r/ F
private& h6 n0 c6 ^; s$ i% K, T
一个或多个变量为本地变量) n- H" B( ]- u* [% C' O% |
firstprivate$ C3 C0 @" m! u  N) S
一个或多个变量为本地变量,且变量值为并行结构执行前的值; S, n  C/ k* J+ u5 I' Z
lastprivate- m1 U+ ~9 l: w- B- A
一个或多个变量为本地变量,且变量值为并行结构执行后的值( |2 n# d8 |! r* c, s
reduction
" z! G$ @  @) O) M
一个或多个变量为本地变量,但变量值将根据不同的运算符来决定,执行完成后变量值将被更新
: u% K$ u" J% z8 o3 e! X- q
copyin
" r; r+ i+ c$ O
使线程本地变量值与主线程变量值相同
+ Y, w( ^: m0 X5 O0 |1 J* G
copyprivate
* U) J6 [# c6 _* g: I
使属于parallel区域的变量值在不同线程中相同
7 s3 ~" Q6 p' t- }, h# L2 |2 D8 F
schedule8 d3 Y9 a( J8 ^  _
设置for循环并行执行方式:dynamic、guided、runtime和static
% ?4 w+ v3 F& `: V
num_threads  Y4 U/ I- g7 j' e$ i3 B
线程数目: ?5 k8 [3 d1 r
if
& }9 b) T( M/ H3 Y
并行语句执行条件
: F* S9 m3 B& l8 K
nowait
2 q- L) h* e, t9 R" C2 p
忽略线程同步等待2 F6 G1 l2 b5 Z  @( K# y' N. e

3 K9 o& F' ]$ R以裸机的omp_matavec案例为例,使用场景的概要流程图如下。
: ^( |8 D/ u2 H* Z2 q6 I
) Q1 o' A# ]& f; ~- sC66xx_0核心创建主线程,通过OpenMP框架加载matvec算法至C66xx_0~C66xx_7核心进行并行运算,从而减少C66xx_0核心负载,并可加快运算速度。" N1 H% k, N; |8 e( P/ d
现可向厂家免费申请TL6678-EasyEVM评估板进行快速评估,免费哦!技术研讨会:79635273、332643352
- d8 D/ W+ V7 H( S2 H! Q1 Q
! F% u- E; K7 r- ?" e1 |: ]7 \​
7 T7 g& ?$ g4 [" x图3/ J& @. C5 ]& ]$ }; c

5 s& ?, _" p: d$ z+ J
# D  J: W6 U# S2.3 代码分析' f1 `" n( \/ R. E
以裸机的omp_matavec案例为例进行代码分析,见图中注释。
) O7 O  I( a& J2 z. G
2 `' u# G6 i3 p5 U( O" w6 Z/ ?
2 [' I! C; B9 \: q8 `9 o/ O
% c; C% F3 ~: H​
, c" S) q+ w' n: x- y5 |# o
- m/ i: e! C1 @: _% U( g. {# {图4
( _7 x$ m! s! C/ d( K7 X0 M& U, `8 b2 o$ r$ I0 a
! F0 m0 P4 h$ _5 S# ^  s
更多推荐
8 w  o! F1 @0 ~4 R$ T: jC6678+K7视频采集处理方案# c: m) s; z7 m) X" `
8 p! X+ l+ }6 c1 X. f
​
, ]; Z, ^! c& T. z8 ^图5( [% Q! |% ?4 i( F
  V% r. g/ b& j3 M7 ~( E6 x( Q. d
FPGA+DSP的高速AD采集处理开发详解3 X5 z4 \3 V* F' ^/ f

$ @5 d& \- M# m2 I' Z% W​4 W2 C& j5 f& i7 v
图64 C' n+ L! Z9 L
回复

使用道具 举报

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-3-26 10:24:29 | 显示全部楼层
需要做PCB线路板的可以联系我
+ t) `% F# p$ S" C. f0 A# P
& m4 v5 |, Z7 V& K1 A$ D6 _; J13651479995
回复 支持 反对

使用道具 举报

0

主题

101

帖子

410

积分

一级会员

Rank: 1

积分
410
发表于 2021-7-17 20:07:08 | 显示全部楼层
6666666666
回复 支持 反对

使用道具 举报

0

主题

13

帖子

34

积分

一级会员

Rank: 1

积分
34
发表于 2021-11-4 23:34:08 | 显示全部楼层
功能能性替代6678的国产多核定点和浮点数字处理器,国产替代是趋势,需要的联系QQ:191321088
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表