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

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

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

TMS320C6678處理器如何進行OpenMP多核通信案例

[復(fù)制鏈接]

131

主題

512

帖子

1666

積分

三級會員

Rank: 3Rank: 3

積分
1666
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-3-26 10:24:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本文主要介紹TMS320C6678處理器開發(fā)中比較常用的多核通信方式:OpenMP,主要基于創(chuàng)龍科技TL6678-EasyEVM評估板進行演示。​
3 A$ m- a0 ?1 M4 w, I+ h6 b2 c  i# d* f) N  |  L1 `
圖1 TL6678-EasyEVM評估板
" B8 H& J+ c7 P' h. Y  J5 _- s2 e  V
TL6678-EasyEVM是一款基于ti KeyStone架構(gòu)c6000系列TMS320C6678八核C66x定點/浮點高性能處理器設(shè)計的高端多核DSP評估板,由核心板與底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。8 m' _( y5 F: w" e, d5 A, A
評估板接口資源豐富,引出雙路千兆網(wǎng)口、SRIO、PCIe等高速通信接口,方便用戶快速進行產(chǎn)品方案評估與技術(shù)預(yù)研。3 E$ E7 g3 k# |

6 [( M0 `' m. h  M' x) W開發(fā)案例主要包括:
8 K$ z' ?  T- ?8 A$ v7 c# F, ]0 P& Q; E& \, M# M# N
(1) 裸機開發(fā)案例
5 X. a6 b& N2 |) y(2) RTOS(SYS/BIOS)開發(fā)案例
, m) h) `( z2 |(3) IPC、OpenMP多核開發(fā)案例, I; D2 V2 V6 w: @! C% v. Y+ e
(4) SRIO、PCIe、雙千兆網(wǎng)口開發(fā)案例4 P7 Y4 _% e( Q) W& ^( _
(5) 圖像處理開發(fā)案例2 ~2 D! b* @- N( c1 X
(6) DSP算法開發(fā)案例
0 m: X. H! a" {(7) 串口、網(wǎng)絡(luò)遠程升級開發(fā)案例8 z6 W# b0 e3 c. l" A) l$ w% R
案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書)可點site.tronlong.com/pfdownload獲取。
- E8 M1 _# p0 n  L, A* [; V
+ f9 D' q8 S, a/ e1 J! H
+ R5 \! `% `/ `  |' S, o! E$ ^2.1 OpenMP簡介
/ F. B- g+ M8 |7 @. \& `  [0 n6 H, a5 M- K
OpenMP是一種多核開發(fā)軟件框架,其主要特性如下:
; h2 g& E* q6 J5 S$ H6 I/ F& A1 U7 n+ h0 V1 T
(1) 可跨平臺使用,代碼兼容性強。
7 D. b: p+ X- T( f* L(2) 以共享內(nèi)存為通信基礎(chǔ)。' m& {; X. M' k# c# e1 F8 x* Q
(3) 支持C/C++以及Fortran語言。
0 U$ u: \  [) R- w8 w- h1 c(4) 一般基于SYS/BIOS運行。
/ ?# h% L1 Y0 n/ |/ J; d5 e
- U$ b" K- U0 f+ Q6 F* W7 Q4 z, p! f7 E9 M# ~
​' s3 R  L: |& j: ~& o2 w) m
圖2# v1 y7 n' x7 i' j8 h

% X% \6 R1 P" d4 M
. b  D) p  ^- t+ i3 }! o/ g2.2 基本語法, w7 D  Q) ~6 o; |* [" X
#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]
' R2 h% k: G& R{  E5 C1 }9 A3 |( i, @% _) e
.../ y! L- Y8 `! h9 ?, N4 S# M
}
0 E5 _+ i" B/ ?! F# N8 _+ r( ]4 I" ~  V
表13 a5 s3 [7 f" N  \. p2 j# G
指令9 C1 b1 [' S2 V; E1 |
說明
  W; U! N( O2 R: o: |1 U( [
parallel
& R6 }) A- @5 `5 [( |, E! N( ~( Q
開始并行執(zhí)行語句
: g$ D% @; A4 }0 j( s: @
for  T6 H/ J( n6 B* o( X
在多個線程中并行執(zhí)行for循環(huán)8 r/ M8 y9 w1 M9 f* n; }
sections
8 g0 _* O0 J% d" k2 V6 G! k* L
包含多個可并行執(zhí)行的sectone結(jié)構(gòu)體
. W- m0 ]1 C: V# T8 \
single8 _+ M9 e; Q) [' U- I7 A
單線程執(zhí)行
3 m0 K  u, |3 X  B) N$ p
master9 ?6 E1 v. Z0 c& B, k
主線程執(zhí)行
9 L5 I" a' i$ U' M
critical1 N" c* l, `& M: Z; m
任意時刻僅可被單個線程執(zhí)行
1 s7 }7 I- ~# U, Y4 a
barrier
2 W/ h) L! u3 \$ {' G
指定屏障,用于同步所有線程. k+ H( W+ b7 I$ d. W
taskwait
0 V5 H& e2 m% y( f
等待子線程完成' \7 y, n1 ?7 A  I9 k! ^4 ]! i# ]
atomic9 c$ @: F7 B5 {6 T
確保指定內(nèi)存位置執(zhí)行原子更新操作8 h$ t2 r2 x3 M0 ~0 A
flush; a7 ^+ b5 p# V2 ~
使線程當(dāng)前內(nèi)存數(shù)據(jù)與實際內(nèi)存數(shù)據(jù)一致( Z9 C. V, H- D0 k% i' l
ordered
! _( ]5 S6 Q+ O8 ?3 \( n
并行執(zhí)行的for循環(huán)將按循環(huán)體變量順序執(zhí)行
6 R1 [$ {- ]/ g  Q
threadprivate
  F0 K: J) O- P( x: M" I
指定變量為本地存儲
# `% N: v9 A) \3 v- L  A

3 r) e% ~- f8 l, |# ?% r表2
) L9 Z$ g4 x7 W' G/ X
子句
0 q9 @9 N) b( D$ s0 N6 S
說明
4 G1 P! V/ [: W0 h9 u3 }0 }, S
default, A# M) e* k- u. z9 e) x% Z
控制parallel或task結(jié)構(gòu)體中變量數(shù)據(jù)的共享屬性
# c$ N9 b/ p' k. D; c+ l
shared1 O2 n- ?! P2 S% u& H+ K* _: I
parallel或task結(jié)構(gòu)中,一個或多個變量為共享變量
! e2 j; @, Q  g3 e& S4 {+ E
private
" g( ]5 R! H) G; _
一個或多個變量為本地變量
5 ~4 Q, ~( @  W1 m. I, q  p) @( H
firstprivate* @% L% @% T/ @' U7 q& T
一個或多個變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行前的值( y6 Z, _* v7 w/ ]6 U
lastprivate
7 r6 v0 f- u  [
一個或多個變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行后的值( A1 Q( m8 h! q
reduction5 e* r: X8 m$ ~
一個或多個變量為本地變量,但變量值將根據(jù)不同的運算符來決定,執(zhí)行完成后變量值將被更新
4 F; X& o6 f- H4 D. J- I/ Z: m1 ~) I
copyin
* h) i8 l2 X3 l/ C
使線程本地變量值與主線程變量值相同
  D8 x$ s7 ~) N$ _4 C' y: F
copyprivate
- \: I( A0 y- w$ O
使屬于parallel區(qū)域的變量值在不同線程中相同0 M3 X- Y. w0 l1 F, |
schedule, S& u( `. s. u7 Z
設(shè)置for循環(huán)并行執(zhí)行方式:dynamic、guided、runtime和static# O- [9 Z+ y/ q
num_threads! [2 `# [2 m4 G. x1 t! `
線程數(shù)目
% ~8 S9 p  o% w* [
if  {) \3 g# o# V8 x, p" L
并行語句執(zhí)行條件
+ T! k1 W7 q4 J0 h# C" L
nowait
% h3 p- a* e& X8 ]7 j
忽略線程同步等待8 P' D8 K7 a# i$ ], n  C
! ]3 R3 d0 ~4 K% k9 Y) U* I/ ]: m- ~
以裸機的omp_matavec案例為例,使用場景的概要流程圖如下。
5 F9 p  d/ k( Q0 G# o$ r6 g0 @4 [, v
C66xx_0核心創(chuàng)建主線程,通過OpenMP框架加載matvec算法至C66xx_0~C66xx_7核心進行并行運算,從而減少C66xx_0核心負(fù)載,并可加快運算速度。
% r" f( Z$ T3 C8 O6 [! J現(xiàn)可向廠家免費申請TL6678-EasyEVM評估板進行快速評估,免費哦!技術(shù)研討會:79635273、332643352
1 k, S8 t  U. E( z0 N" M
; ^+ ]$ a" ]0 }% q​  O* c7 ]* c9 j) D1 t
圖3
4 V: z2 O1 |# v; A; E* \
8 M* z, k( {3 l( d6 M; n: O7 T2 C) y4 ^4 d
2.3 代碼分析
3 n- a' R) Y7 E$ X6 Y以裸機的omp_matavec案例為例進行代碼分析,見圖中注釋。( l+ C; H. i1 k  [8 M

- o" _" D4 y! O4 A0 c5 i1 Q
$ u7 u4 E* H" w; ~3 c8 K/ z! w3 X+ D8 \. T# U
​
4 d! G$ V: {* ^# x" z+ B
# ~  V, o7 w' h6 y* U" u( t圖4+ ]  c* ]/ a) S' Z" M$ F0 t

( a6 d, n8 g( E
9 L  \( v  z1 ]2 G更多推薦2 l2 V6 c' N1 A2 P9 b
C6678+K7視頻采集處理方案& H$ v! s0 z! v
2 n6 O( K8 X2 @% p4 @, F0 E' _, L
​# b, @' k  e  P; V& k# r7 Y: ]
圖5
' `. o3 o9 B' J5 y5 r" C% E# }
; w5 B; d9 P; \  UFPGA+DSP的高速AD采集處理開發(fā)詳解
- {. ]( A0 `- H5 G, N/ I. S. z
  L. M- c" Y) j: }* B, N7 x# \​
( ^- D& K$ i2 Z: ~- ~9 l圖6
% Q; m& |7 X  ?1 q5 \! V6 Q
回復(fù)

使用道具 舉報

131

主題

512

帖子

1666

積分

三級會員

Rank: 3Rank: 3

積分
1666
沙發(fā)
發(fā)表于 2021-3-26 10:24:29 | 只看該作者
需要做PCB線路板的可以聯(lián)系我
. ^; F( `6 e4 x+ _0 f" E* I# }% v; z/ E1 v) g2 {
13651479995
回復(fù) 支持 反對

使用道具 舉報

0

主題

101

帖子

410

積分

一級會員

Rank: 1

積分
410
板凳
發(fā)表于 2021-7-17 20:07:08 | 只看該作者
6666666666
回復(fù) 支持 反對

使用道具 舉報

0

主題

13

帖子

34

積分

一級會員

Rank: 1

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

使用道具 舉報

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

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

本版積分規(guī)則


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