电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-3-26 10:24:16 | 显示全部楼层 |阅读模式
本文主要介绍TMS320C6678处理器开发中比较常用的多核通信方式:OpenMP,主要基于创龙科技TL6678-EasyEVM评估板进行演示。​' R4 U, `8 u) n* \2 b9 o

' t2 F( B; F, |) H9 K' R图1 TL6678-EasyEVM评估板! v; z! c7 v- [& F3 T1 w

' v: b9 D$ g: e# h7 C3 XTL6678-EasyEVM是一款基于ti KeyStone架构c6000系列TMS320C6678八核C66x定点/浮点高性能处理器设计的高端多核DSP评估板,由核心板与底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
' y  r5 ^; [! i7 ~* C& w3 \评估板接口资源丰富,引出双路千兆网口、SRIO、PCIe等高速通信接口,方便用户快速进行产品方案评估与技术预研。
3 |. H* G7 L, A4 w$ D
2 Z4 V% T' @/ ?' m开发案例主要包括:
# E7 W; Q1 M. N8 G
. X* e3 }" o3 f1 e(1) 裸机开发案例
8 }# Q8 V2 }, G& `- K; ]! [1 J1 ](2) RTOS(SYS/BIOS)开发案例
- G9 F0 f. F6 j(3) IPC、OpenMP多核开发案例
9 q# q- n& x' J. ^1 n& t(4) SRIO、PCIe、双千兆网口开发案例& G( j: u6 h- U$ R
(5) 图像处理开发案例
% Q& o7 r3 c: {(6) DSP算法开发案例
! m4 w" N# w  q! C$ l7 \# n(7) 串口、网络远程升级开发案例5 X0 ~: _, K5 K. r
案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点site.tronlong.com/pfdownload获取。! b  f  @5 y: I. x
- f5 Y, F+ z/ \4 q  m9 U' n
0 K) m; D; V. i; I! Y
2.1 OpenMP简介- z  }1 \, {+ u4 @
! B# x# \0 J! n5 R* I
OpenMP是一种多核开发软件框架,其主要特性如下:0 I& u1 Q4 I! Y: L6 m
' }& Q, h) y: B2 z$ k+ ~" f
(1) 可跨平台使用,代码兼容性强。
1 r. M( @5 w& u1 a( q8 X( e0 q(2) 以共享内存为通信基础。) Y% q0 N$ [) l- Q  u2 g
(3) 支持C/C++以及Fortran语言。
! \" j+ |+ n% H+ |1 ^% ^(4) 一般基于SYS/BIOS运行。
1 B* e  j9 o( b* V- ]9 }: M1 P6 }; Z8 ^( u0 Z( f
7 ]; e/ u5 A5 K# t
​
1 [$ C4 b- E( E- Y" r% F  k图2. X1 d2 `5 {# t

( ]# e+ W6 p9 @) u/ ]5 i6 }4 j) M% W  E+ a
2.2 基本语法
& Y+ G# L  a. s" ?" |#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]
- v2 x0 ?: l# X; }  X" G/ S{) L" G7 O" j7 ?& I( N; N5 n) l
...: z, q1 U1 c" }1 A
}; d  X* G2 m! M; T9 X
2 E. z( ]9 q" h, _) L3 L! C
表18 }' [, x# j" |. A: P. U3 ?/ c
指令, k+ a& s' f! A, _. l
说明! @7 J& d0 t/ [  H
parallel
' X0 w1 z6 e- n
开始并行执行语句9 p, d! y4 s. `: B  k. a
for0 g; I% _) a- ]. t4 A3 V$ Q; v
在多个线程中并行执行for循环
1 R: S. W8 D  h9 D7 z
sections
/ `3 m& t8 J5 h. k0 d7 R
包含多个可并行执行的sectone结构体! \: n5 E7 A, E4 B1 b
single+ P4 ]. Q# Q4 r
单线程执行
; k" t. \- V% g3 s
master
5 M; Y& Y( i1 u/ g
主线程执行
. L! h7 k3 ^) C; u0 w" s
critical0 s0 {' k! T3 N6 k, V, c1 C8 G
任意时刻仅可被单个线程执行- a. }& P5 O3 z, ~1 C& x5 _
barrier
1 n9 H6 s1 a0 c& Q! Q; O
指定屏障,用于同步所有线程- j' d% E& g# H
taskwait
( S( h0 T! P. M0 f6 f; ~
等待子线程完成
% ~+ ]- X9 G5 T9 m: r# Y
atomic
# W/ g, q& C  }& j5 q& e
确保指定内存位置执行原子更新操作
6 ?7 G% F0 F' v' f! S  ~
flush! I: J& \6 c0 p! F' u$ p: E  w
使线程当前内存数据与实际内存数据一致
4 t( Z" j& n3 `" X
ordered( c; h& g6 E( z! i- A1 B
并行执行的for循环将按循环体变量顺序执行
& y8 W# z; A& d1 Q3 Q
threadprivate: H, W" j" B( I9 @  B% m
指定变量为本地存储; J" E' s. e4 x
9 I% Z6 E: C1 ]! m
表2& Y# W) e+ E9 E- I7 S8 {
子句
' |( N; H5 o9 b0 [( V
说明
2 R* f7 H5 k1 d* @, s* Q
default/ }" E. Z) M- V$ p+ E% a8 c
控制parallel或task结构体中变量数据的共享属性5 m1 ~; e% M9 `% s" W
shared  Q5 x2 b8 `4 l% a
parallel或task结构中,一个或多个变量为共享变量
7 I' ?$ X7 p7 t. F
private4 w# t  C; b1 d6 s/ t
一个或多个变量为本地变量) h; S; g% C* R2 d$ x0 l8 D
firstprivate
5 z( [# g* s6 v) k" K# m# K/ ^
一个或多个变量为本地变量,且变量值为并行结构执行前的值
7 Q' T9 f. n" }+ U0 L& }+ [
lastprivate' ?9 F/ x& O5 M3 G% v
一个或多个变量为本地变量,且变量值为并行结构执行后的值/ r( J) P4 r: l
reduction' Y3 L( U# U$ z$ j" L6 B
一个或多个变量为本地变量,但变量值将根据不同的运算符来决定,执行完成后变量值将被更新1 Z' Z' E) }3 W6 s# Q
copyin
: `& G% {) ^/ n" R0 e
使线程本地变量值与主线程变量值相同
  \( t3 J1 x4 a( t6 s; e( A8 L
copyprivate
: e: h1 X; ^8 R* s( f
使属于parallel区域的变量值在不同线程中相同
9 e" z# {1 {  b' m8 Y& |2 H
schedule
4 }& t8 N5 _3 }! F3 i
设置for循环并行执行方式:dynamic、guided、runtime和static6 W! U3 c4 ?0 `
num_threads: v- `) j& ]0 r( u$ d# j
线程数目
* N+ M' g, ^2 o
if
2 Y* j: U' _% K
并行语句执行条件
9 f9 u# a; h  r: P' [; X' I
nowait
- o5 ~0 w$ H/ y$ `# t
忽略线程同步等待
# Q9 q. e6 `. K) H+ h" r
/ H2 y) o. `7 G; V9 o
以裸机的omp_matavec案例为例,使用场景的概要流程图如下。+ j$ S" {  K- C0 r) @& {0 N4 b/ w

, l, z& ^, c2 J2 G" yC66xx_0核心创建主线程,通过OpenMP框架加载matvec算法至C66xx_0~C66xx_7核心进行并行运算,从而减少C66xx_0核心负载,并可加快运算速度。
: I* ^, {9 m- P6 `0 ?0 ^5 x! Q现可向厂家免费申请TL6678-EasyEVM评估板进行快速评估,免费哦!技术研讨会:79635273、332643352* k  g' ?4 z5 C. i

* M# [4 z2 b7 V/ _, H+ |0 R​# Q' v. Q1 c3 ?, q- g& k
图3* U3 @3 f/ @+ \
# ^9 Z( F" P- q- V% l( x& g, t
+ T' r* E; v0 a$ C
2.3 代码分析
  \/ \8 e  g, b# }/ y5 x以裸机的omp_matavec案例为例进行代码分析,见图中注释。
0 U& v4 @) F& R1 S( T, u9 G; U: Z: }+ W: G* h1 A! Z8 R
& N0 q3 Q  O, g3 c$ A

- J2 V' b* \  Y/ g- Y0 ?​
3 i- s8 ]* r: J: J5 {6 B1 p4 s8 `. a
图45 o: ]' Y6 w" m0 {6 l' a. `* b6 T& l

& D5 u" n0 ?8 x( K6 h1 V, b' y$ J; y/ c0 y6 _; d2 n
更多推荐) f6 v! s( F' R+ ?; G1 q6 x
C6678+K7视频采集处理方案# O; a$ [! W0 J3 N# _. I
/ ]( V$ E# P9 R# M' b6 X$ T- p2 F
​" o4 Q. a; u9 D+ \- r8 m
图5' n  j% u8 Q- J6 @, C" a" U

' M$ s1 Y0 c  wFPGA+DSP的高速AD采集处理开发详解# n! A9 L/ l( S! D

/ b/ I3 K! q3 L6 r9 F- d2 e​
1 {  W4 _- ^" ^6 I2 g9 V图6
! i$ d" Z# e: k' ]" V& Y; d+ W
回复

使用道具 举报

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-3-26 10:24:29 | 显示全部楼层
需要做PCB线路板的可以联系我
4 T" Z! a! {' \, w2 u3 }7 l0 r/ T" V1 f4 _& c! d
13651479995
回复 支持 反对

使用道具 举报

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 返回顶部 返回列表