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

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

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

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

[復(fù)制鏈接]

131

主題

512

帖子

1666

積分

三級會員

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評估板進(jìn)行演示。​
$ M; w+ T2 _( Z5 Z  p! ^+ t4 z- s6 |4 K# g# R# H
圖1 TL6678-EasyEVM評估板
+ b5 d3 q* o, D# G# y  r; k  m! p! P  C
TL6678-EasyEVM是一款基于ti KeyStone架構(gòu)c6000系列TMS320C6678八核C66x定點(diǎn)/浮點(diǎn)高性能處理器設(shè)計(jì)的高端多核DSP評估板,由核心板與底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
) c( P+ O' H1 h) \$ N) `8 I9 a評估板接口資源豐富,引出雙路千兆網(wǎng)口、SRIO、PCIe等高速通信接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。* m6 n$ ]" v" F- V7 {7 |
) x' u7 H, E' K
開發(fā)案例主要包括:
* ]- u& y# i5 u0 k
8 L( Q5 _0 E4 u1 M+ F* E  p(1) 裸機(jī)開發(fā)案例
% N- U! W. e& j* e: p8 ~(2) RTOS(SYS/BIOS)開發(fā)案例4 Q( X. X, X8 G, i  v
(3) IPC、OpenMP多核開發(fā)案例
5 T1 g  z  X' e# U+ ^! e2 P  o, i(4) SRIO、PCIe、雙千兆網(wǎng)口開發(fā)案例( X0 M$ E5 S, E, c8 j, Z$ t8 B  b
(5) 圖像處理開發(fā)案例7 C# V4 W2 }: u  A! s) M9 `
(6) DSP算法開發(fā)案例# f( T/ |. R# c" p& V8 D8 T8 Q
(7) 串口、網(wǎng)絡(luò)遠(yuǎn)程升級開發(fā)案例
; E  i' z/ ~( g案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書)可點(diǎn)site.tronlong.com/pfdownload獲取。
5 s6 T/ V% H6 D$ O: x$ }- Z
$ v" ?  N+ |4 ^! P9 E  M; ]1 W4 {8 \% `- C, o8 \4 q
2.1 OpenMP簡介
! }; l. Z$ y! Q3 m
* L' z1 X' U- W9 D, ]OpenMP是一種多核開發(fā)軟件框架,其主要特性如下:7 n2 _6 J; z; I5 \' D

5 t8 v1 O- y4 T- V(1) 可跨平臺使用,代碼兼容性強(qiáng)。( z1 O7 K8 j$ R  w# ~
(2) 以共享內(nèi)存為通信基礎(chǔ)。
) z! w0 Q4 {$ k/ E% P(3) 支持C/C++以及Fortran語言。/ D% J5 a: p3 _$ X  @/ y- s: X
(4) 一般基于SYS/BIOS運(yùn)行。& k5 T% Z5 R- ~( I9 ]+ r

3 F. G( ?- F* |+ x( {" K& Y  g+ \: F( f$ ^7 N9 N
​
* P7 P3 j4 ^  m+ n7 f# i圖2
9 T7 k; W& Z- ~) K+ `- R
1 V1 }. B4 L! j, ~1 s  F* o5 N8 O4 v; {- C2 r! H" n
2.2 基本語法' G# Y& Q/ w+ q; Z/ a9 q
#pragma omp 指令 [子句 [ [ [,]子句 ] ... ]
, [$ z. J' D& N" m{
8 t! ?2 Q6 @' `  q- q7 ?; ~* H...
# l! ]$ }0 V+ _; T}
0 @. m! Y5 h( p) p7 y3 }$ K( U! t" N/ t# W8 v9 ^  k0 a* D/ `( o& X
表1
& \8 C. M. t; {
指令* S! m" O  C. ~
說明. I/ c$ a2 a8 @! c8 o
parallel
3 s# \) x% ]7 ~) x
開始并行執(zhí)行語句
+ b  e7 Z# M  H% o0 O4 `$ P: u
for& h. w  L" t# V+ I7 e
在多個(gè)線程中并行執(zhí)行for循環(huán)* N, W0 l6 C3 b# v
sections+ r) ]" u) @  v( Z- }7 y/ g
包含多個(gè)可并行執(zhí)行的sectone結(jié)構(gòu)體1 V$ |4 D+ {$ ^8 d6 w4 q/ }
single
5 L' l6 Q; F- O3 B) l6 w  }$ \5 _/ W
單線程執(zhí)行( I4 ^. T) a3 n* m- [2 c6 U1 d
master8 `& Y. r0 |; N$ \3 U- v
主線程執(zhí)行$ a. x9 C1 V* v! ~) |
critical
8 M' \4 f# v2 _4 T( H5 a
任意時(shí)刻僅可被單個(gè)線程執(zhí)行
# m! K  l5 O6 Z$ A' ]( E
barrier
& @& I/ O" j+ |) B/ O# W
指定屏障,用于同步所有線程: [& |7 A, C8 M* Z* e
taskwait  E/ q$ R3 d: |/ h. }" }
等待子線程完成0 U: ~0 f- B( L0 y6 I9 V
atomic6 N- C7 z# N% j0 G" }4 Y
確保指定內(nèi)存位置執(zhí)行原子更新操作* {9 Y4 q  L" l" b
flush
; D. R/ q$ l+ C6 r1 y
使線程當(dāng)前內(nèi)存數(shù)據(jù)與實(shí)際內(nèi)存數(shù)據(jù)一致
1 y. M, v' O0 g
ordered( @; T0 _5 W1 K5 R9 C) [7 x( B
并行執(zhí)行的for循環(huán)將按循環(huán)體變量順序執(zhí)行
: z% b. y" L6 L7 F& R5 z
threadprivate
+ u- x: M. v* q$ R8 `2 k5 @  @
指定變量為本地存儲5 S2 ^( k' N+ c0 ?5 B. R4 P

% A7 b& Q" p7 c: |表2
* e& d+ I+ S7 M7 F1 ?, p- d
子句
: E4 w% M" m* I# x0 v
說明, Y" l; F+ \% ?
default
0 m0 E- m$ M% O! P) T; X0 x7 A+ Y7 S
控制parallel或task結(jié)構(gòu)體中變量數(shù)據(jù)的共享屬性
/ C$ }  A& I: g5 S
shared
4 w, w2 I" J/ A' D5 U
parallel或task結(jié)構(gòu)中,一個(gè)或多個(gè)變量為共享變量# Q. G1 z9 U, z
private
7 d5 w, f& W/ U6 T1 d
一個(gè)或多個(gè)變量為本地變量8 v$ J2 \, ?$ [$ {& j9 R
firstprivate4 j" s& u2 w6 g! K9 T( `* f
一個(gè)或多個(gè)變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行前的值
$ R1 y$ o+ O' y) j
lastprivate/ C4 Q& Q* K& _9 V1 C9 a: s' R% C
一個(gè)或多個(gè)變量為本地變量,且變量值為并行結(jié)構(gòu)執(zhí)行后的值. k- w8 Z3 G% U( k. \, @" R% u
reduction5 @+ A" ^9 |- h+ [
一個(gè)或多個(gè)變量為本地變量,但變量值將根據(jù)不同的運(yùn)算符來決定,執(zhí)行完成后變量值將被更新
8 _& L- L1 H9 o% B% V6 f; w9 [
copyin  a) C1 H8 D' J7 Q+ N
使線程本地變量值與主線程變量值相同
+ j6 F: r9 Z6 W* e
copyprivate: S7 U  k8 @3 n* s
使屬于parallel區(qū)域的變量值在不同線程中相同* ~: r: i) L) H! v
schedule9 f; `8 l6 B9 w  M
設(shè)置for循環(huán)并行執(zhí)行方式:dynamic、guided、runtime和static( g8 f6 t6 C+ q
num_threads
3 C* }1 T( }$ m- o
線程數(shù)目
  S0 u7 |: G4 L5 ^! U
if
7 m2 m* C3 ^" R1 n- C+ V; W% g
并行語句執(zhí)行條件8 s8 y+ L  q5 w) i
nowait7 Z/ m( Y  I! f% Z2 E, @9 g
忽略線程同步等待/ m  ^5 D" K# Z' D
' L% M- G2 U' \* z0 t' S
以裸機(jī)的omp_matavec案例為例,使用場景的概要流程圖如下。$ g# [, I  C3 x3 s5 o% t) a! I( x

( g& Y' c0 X$ ?4 u! WC66xx_0核心創(chuàng)建主線程,通過OpenMP框架加載matvec算法至C66xx_0~C66xx_7核心進(jìn)行并行運(yùn)算,從而減少C66xx_0核心負(fù)載,并可加快運(yùn)算速度。
. D+ t$ c4 Z2 S+ C* N現(xiàn)可向廠家免費(fèi)申請TL6678-EasyEVM評估板進(jìn)行快速評估,免費(fèi)哦!技術(shù)研討會:79635273、332643352: P5 f( ^3 V& H7 I# g5 e, w/ c2 S

: Z* c4 M. T/ e6 S; M2 H3 D/ S% s6 b​
& [( H; Y; I" @) k' K6 X圖3
: E4 ^% B1 q2 C* H$ G( _% G2 U- D8 ^% \; D. b  q( Q

4 h  a& [0 v, s8 r/ N" T2.3 代碼分析7 _. _2 B& {! R& b
以裸機(jī)的omp_matavec案例為例進(jìn)行代碼分析,見圖中注釋。7 s) s+ }8 g! T$ u

1 [! `; W! ~7 N0 E" N* [. G4 s! Y- j+ f* Q# g" k+ F  x, ]

, b' K' J, u% u4 J​
: q4 H; ^0 S( [/ j7 I/ V3 @5 c% K1 t: \! x3 P+ f7 p
圖4- b' [* D! a) K9 r6 i& K! P6 ^2 s
. j# a$ D6 @; U5 L* V2 E* q
5 B' m9 c1 e; m" q
更多推薦4 X% q2 o# {& W: o4 x
C6678+K7視頻采集處理方案* ]. b, s. E9 ?

! J5 y; X/ `- i​1 J1 R: v: W5 F+ Y2 |
圖5
8 [6 y8 i& ~' ?& ^% h+ l  w( R/ O4 {) r. V& U7 ?6 Z* c
FPGA+DSP的高速AD采集處理開發(fā)詳解* G6 H* f" m/ n; y& }3 G0 n! o/ K

9 z( s2 N' N; s​
) N' t* k4 Z! l% D圖6# f" T4 Y9 K; ]/ i

131

主題

512

帖子

1666

積分

三級會員

Rank: 3Rank: 3

積分
1666
沙發(fā)
發(fā)表于 2021-3-26 10:24:29 | 只看該作者
需要做PCB線路板的可以聯(lián)系我
& ]  Z6 t* F" U, d' P: T
8 e2 d4 C" [4 J13651479995

0

主題

101

帖子

410

積分

一級會員

Rank: 1

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

0

主題

13

帖子

34

積分

一級會員

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