電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 3374|回復(fù): 3
收起左側(cè)

TMS320C6678處理器如何進(jìn)行OpenMP多核通信案例

[復(fù)制鏈接]

131

主題

512

帖子

1666

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1666
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-3-26 10:24:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本文主要介紹TMS320C6678處理器開發(fā)中比較常用的多核通信方式:OpenMP,主要基于創(chuàng)龍科技TL6678-EasyEVM評(píng)估板進(jìn)行演示。​
* r9 w7 r4 }- Q  ]* L: N8 M5 \' J$ c" R
圖1 TL6678-EasyEVM評(píng)估板
1 A9 X5 K- B5 p/ M, t7 k( m& X# q6 E/ b: |5 W8 K$ N! b
TL6678-EasyEVM是一款基于ti KeyStone架構(gòu)c6000系列TMS320C6678八核C66x定點(diǎn)/浮點(diǎn)高性能處理器設(shè)計(jì)的高端多核DSP評(píng)估板,由核心板與底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
. \! l4 g$ @2 X3 @7 b評(píng)估板接口資源豐富,引出雙路千兆網(wǎng)口、SRIO、PCIe等高速通信接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。
  r" @5 C# B$ s8 k2 i
6 I- G% N0 I: c3 ~( b! }5 k8 {開發(fā)案例主要包括:+ w2 x& I9 o2 K% N9 P& i

/ J/ A4 V" H5 w7 E# F3 A  `(1) 裸機(jī)開發(fā)案例$ z& F( Y& w' T+ c/ d7 {- ]
(2) RTOS(SYS/BIOS)開發(fā)案例
' g% y4 e2 @( J3 }4 u3 G(3) IPC、OpenMP多核開發(fā)案例2 @; n- Q( G4 S- l! X' ~
(4) SRIO、PCIe、雙千兆網(wǎng)口開發(fā)案例& p9 \- i! l6 }
(5) 圖像處理開發(fā)案例9 \" o' J& S3 r
(6) DSP算法開發(fā)案例
5 m  ~- v0 y! b, [' s(7) 串口、網(wǎng)絡(luò)遠(yuǎn)程升級(jí)開發(fā)案例
# H8 `9 P2 b: P+ e  O: N8 |案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書)可點(diǎn)site.tronlong.com/pfdownload獲取。" O! T9 j% p3 t6 J6 P$ G4 t
) l8 ?! p. C& q1 ^

( S" t5 @6 z. p6 M2 M$ C. {2.1 OpenMP簡介6 ^8 o# N% U6 \4 ~- {; ~0 U7 j2 l
) V- W/ I/ Q7 A2 a! F
OpenMP是一種多核開發(fā)軟件框架,其主要特性如下:
3 e  p* C. a# V+ n7 c) C1 x9 w7 ?9 [) k& u, g
(1) 可跨平臺(tái)使用,代碼兼容性強(qiáng)。/ w# D; o) `' O- g/ U3 l) S1 i3 o6 Q
(2) 以共享內(nèi)存為通信基礎(chǔ)。
9 Q. L9 _% k, r(3) 支持C/C++以及Fortran語言。
0 M/ [' {+ o' G% X. n$ I(4) 一般基于SYS/BIOS運(yùn)行。
# u# ]# ?) G: b* y3 Y! u4 `7 j% ^6 \* F4 N2 O* j4 t" a  S7 }& ~/ _
2 ]4 x4 |, c# M+ C
​  v; k% w5 ^3 P: W" w
圖2/ a# |5 [; Y+ x8 Q9 f- e

: T! e* ~6 o7 z! a* T
) S7 a1 H, H/ H0 ?  k4 R2.2 基本語法" l% ]/ c0 ~: |" \
#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]
" u6 f$ l! E1 h/ a{; r) k$ v* _/ U; R& @" ^. V: x5 \
...
$ V; e5 w2 Z/ ~, P. f# z}
) ?" X. u5 k" N& B2 ]# c: D( Y" A% t+ C7 X0 j! z' [2 o- P0 |
表1
+ F3 o, m; i) @
指令
- `& w. _2 B2 k- f
說明
( G- `( c1 s! E
parallel
" M7 A% Q8 u) o- a7 ~7 I2 Y
開始并行執(zhí)行語句
9 e7 K2 Q% y" X: m/ X0 \/ o; }6 b
for
2 U3 X7 U9 O; G: d6 J+ Y
在多個(gè)線程中并行執(zhí)行for循環(huán)* S" T+ i5 r8 f$ E" {* s* j
sections3 V* g4 z/ o- ~0 b0 k
包含多個(gè)可并行執(zhí)行的sectone結(jié)構(gòu)體. |4 m0 [( J/ r* b
single
0 E/ G' a9 K9 R7 ~
單線程執(zhí)行- G( a* M6 u/ }; R
master
2 n, M3 F5 ~, ~! x
主線程執(zhí)行
( F' i6 ?" V' ^7 K; F& D# P9 S' f9 _
critical7 Y9 ~. }& ?. y1 E2 a/ O
任意時(shí)刻僅可被單個(gè)線程執(zhí)行0 a9 K9 B' \0 \0 K0 ?" w
barrier* i4 E* M! P6 F/ D! \
指定屏障,用于同步所有線程* y/ _# M! a0 V5 W# C
taskwait& m9 y3 H( g8 N
等待子線程完成
. F6 l2 I2 U" E& g2 ^2 h0 J& b3 g6 R
atomic
- O: D* r; `5 ]5 n. n
確保指定內(nèi)存位置執(zhí)行原子更新操作
% `- g7 _- |7 \0 m- r  k/ `
flush
+ q; N4 i; L' q9 g8 r! A' A% T
使線程當(dāng)前內(nèi)存數(shù)據(jù)與實(shí)際內(nèi)存數(shù)據(jù)一致
" I. k8 F9 E( p) E
ordered
- O; `. {! e2 N
并行執(zhí)行的for循環(huán)將按循環(huán)體變量順序執(zhí)行& U# ?' ?" y8 L
threadprivate
4 ?0 s  F/ |7 s! T4 K
指定變量為本地存儲(chǔ)
% [$ V3 G; \# U0 F

3 ]9 N6 V$ X: J3 U1 K0 h表2; U( S8 S3 U" Y2 A/ Q+ G
子句
% w5 W! A' l6 J# F1 J7 f
說明6 @/ ]6 {# r5 M2 a2 x9 H: c0 v
default& q: G) V2 b" C" x8 e
控制parallel或task結(jié)構(gòu)體中變量數(shù)據(jù)的共享屬性3 ?- t& C7 f# J
shared! X! X. e' l# L- {/ I$ D
parallel或task結(jié)構(gòu)中,一個(gè)或多個(gè)變量為共享變量3 k) i5 p& L; V7 L7 v2 G3 p
private
2 }; K" X3 a5 h: z7 T7 F) O1 |
一個(gè)或多個(gè)變量為本地變量
3 D, K8 D  [+ k( ?# v) r- \
firstprivate; G& q2 b9 i& C8 d) z( Q! O
一個(gè)或多個(gè)變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行前的值
2 c, @  p- U( z/ k" e
lastprivate. B! H6 }8 ^. i8 a8 h: P. u
一個(gè)或多個(gè)變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行后的值
' V! L% B+ u! y7 _' l* d
reduction1 t) O& _$ V3 v' b- o( I( ]
一個(gè)或多個(gè)變量為本地變量,但變量值將根據(jù)不同的運(yùn)算符來決定,執(zhí)行完成后變量值將被更新
* F; A) _1 h. C3 n! O4 E
copyin
' \  }5 ~( g. [1 D6 x
使線程本地變量值與主線程變量值相同
3 J+ ^! A% _9 M9 k( q! p( }
copyprivate
1 G7 j% y: T! G! N$ M# q
使屬于parallel區(qū)域的變量值在不同線程中相同
; f6 C: K" x. X
schedule: U! b; ^$ c: W
設(shè)置for循環(huán)并行執(zhí)行方式:dynamic、guided、runtime和static- v( Q0 }5 ~, p: Y1 \. c7 [1 c
num_threads6 O5 L5 e- n9 t* R" h
線程數(shù)目
: R0 h. t. @' y. `9 K1 C% ^
if4 j+ s( a. [( @, @0 A' a: N
并行語句執(zhí)行條件; j! X  E  m% h3 W/ N% \; [" `: j
nowait
& b% g) T5 X" y) d5 b5 c
忽略線程同步等待
; H. e5 U9 ^! v2 P- G
3 x: _, P( u6 e3 m. |2 o* B- k
以裸機(jī)的omp_matavec案例為例,使用場景的概要流程圖如下。
5 P# R8 q7 i- N3 {/ u" N6 x, f1 ]3 [, b" C) k/ t
C66xx_0核心創(chuàng)建主線程,通過OpenMP框架加載matvec算法至C66xx_0~C66xx_7核心進(jìn)行并行運(yùn)算,從而減少C66xx_0核心負(fù)載,并可加快運(yùn)算速度。2 V. E) ^% R+ h. b" J
現(xiàn)可向廠家免費(fèi)申請TL6678-EasyEVM評(píng)估板進(jìn)行快速評(píng)估,免費(fèi)哦!技術(shù)研討會(huì):79635273、332643352
9 ?* ~. B+ R, K8 Q
3 d6 C# Q. j+ @' E' i" [8 ^) f; W​
% |; y+ h$ e- E6 B/ I# C# t7 P圖3
: v+ i- d' ?3 N7 K% b$ D1 O8 D. c9 i* l$ f6 q* {

, q4 R" T) L- @3 s" |  J7 Y- J7 [2.3 代碼分析
, W; T7 h: M$ U- ~8 P1 W/ Y9 y7 l以裸機(jī)的omp_matavec案例為例進(jìn)行代碼分析,見圖中注釋。
# z0 Y5 e, w" o8 A& R* q" I  j( P- `5 M+ L2 C9 c+ y+ c

  C" s* {0 |# u
8 ~5 G: d. `6 S+ s- f​) X! b. n( z5 F: ~  @5 N  O. s9 K
6 P& R& p$ X6 b9 b7 ]! d
圖4
/ T; t- ~6 P2 q; ?4 A" M6 s* L) b% I) Z5 A% k- ?
% u0 K$ }& Y7 F. |7 m6 L3 f
更多推薦
( w: b5 {* E+ u2 w% a' f8 P5 CC6678+K7視頻采集處理方案
, k$ ]) O  v$ K0 r: C& N$ s
$ L8 P! W/ E5 N1 R! w​
/ ?0 A( W# o( Q9 c; K0 ~" }圖5& V+ m. r: m4 _# `
6 i, i  J2 |2 p( W3 R) V* R( x' ?
FPGA+DSP的高速AD采集處理開發(fā)詳解
% o$ T: U0 M8 A" ~. v9 R9 B: F1 R& y# o( q
​! N. I0 g$ _& l' @$ k7 {" N# V) O2 L
圖63 @6 z1 H$ w+ k  H# a5 j& U

131

主題

512

帖子

1666

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1666
沙發(fā)
發(fā)表于 2021-3-26 10:24:29 | 只看該作者
需要做PCB線路板的可以聯(lián)系我7 c+ q2 ?/ o0 [' I" [8 w; W
9 `. i2 h5 m9 q
13651479995

0

主題

101

帖子

410

積分

一級(jí)會(huì)員

Rank: 1

積分
410
板凳
發(fā)表于 2021-7-17 20:07:08 | 只看該作者
6666666666

0

主題

13

帖子

34

積分

一級(jí)會(huì)員

Rank: 1

積分
34
地板
發(fā)表于 2021-11-4 23:34:08 | 只看該作者
功能能性替代6678的國產(chǎn)多核定點(diǎn)和浮點(diǎn)數(shù)字處理器,國產(chǎn)替代是趨勢,需要的聯(lián)系QQ:191321088

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表