在用Vivado對(duì)工程編譯時(shí),會(huì)彈出下面的對(duì)話框:
備注:雖然FPGA不能叫編譯,但很多工程師為了方便起見(jiàn),將綜合+實(shí)現(xiàn)+生成bit文件的過(guò)程統(tǒng)稱為編譯了,這種說(shuō)法大家理解就好。
很多工程師都會(huì)選擇多個(gè)jobs進(jìn)行編譯,以為這樣會(huì)更快一些,而且這個(gè)jobs的數(shù)量跟本地CPU的線程數(shù)是一致的,這就更加讓工程師們認(rèn)為這個(gè)選項(xiàng)就是多線程編譯了。
但對(duì)Vivado更加熟悉的工程師,肯定會(huì)知道,Vivado中的多線程是通過(guò)tcl腳本去設(shè)置的,而且目前最大可使用的線程數(shù)是8個(gè),那這個(gè)jobs跟多線程有什么關(guān)系呢?使用多個(gè)jobs能加快編譯速度么?
我們首先來(lái)看jobs的定義,在UG904中這樣寫(xiě)道:
因此,這個(gè)jobs是我們?cè)谕瑫r(shí)有多個(gè)runs在跑的時(shí)候才起效的,如果只有一個(gè)Design run,那這個(gè)參數(shù)是不起效的。
對(duì)于多線程,在UG904中是這樣說(shuō)的:
Implementation過(guò)程,最多使用8個(gè)線程,在Windows上,默認(rèn)是2線程;在Linux上,默認(rèn)是8線程;我們可以通過(guò)tcl腳本改變線程數(shù),使用方式為:
set_param general.maxThreads 8
也可以獲取當(dāng)前使用的線程數(shù):
get_param general.maxThreads
為了更直觀的體現(xiàn)jobs和threads的使用方式,下面進(jìn)行慘無(wú)人道的試驗(yàn):
首先,處理器為Intel的i7-8700k,6核12線程,下面記錄的時(shí)間僅是Implementation的時(shí)間,不包括Synthesis。
Test1為默認(rèn)的2線程,最大jobs(12)的情況下,需要19min;
Test2把jobs降為1,線程還是2,仍然需要19min,說(shuō)明在只有一個(gè)Design Run的時(shí)候,jobs的數(shù)量不影響編譯時(shí)間;
Test3是采用8線程,jobs跟Test1相同,都是12,此時(shí)需要17min,比默認(rèn)的2線程快了2min;
Test4是在8線程的基礎(chǔ)上,把jobs降為1,此時(shí)還是17min,再次驗(yàn)證了單個(gè)design run時(shí),jobs的數(shù)量不影響編譯時(shí)間;
Test5是總共有6個(gè)Implementation的Design runs,采用8線程12jobs同時(shí)跑;
在下面這個(gè)圖中也可以看出來(lái),此時(shí)CPU的利用率已經(jīng)很高了。
Test6也是6個(gè)Implementation的Design runs,8線程,但jobs設(shè)置為1,此時(shí)可以看出,只有一個(gè)design run在跑,其他都在等待中,要等這個(gè)前一個(gè)跑完后,后面的才會(huì)開(kāi)始。
Test112219min
Test21219min
Test312817min
Test41817min
Test512838min
Test618120min
Numjobsthreadstime
從上面的試驗(yàn),我們可以總結(jié)如下:
對(duì)于單個(gè)design run,jobs的數(shù)量不影響編譯速度;
在Windows上,默認(rèn)的線程數(shù)是2,我們可以通過(guò)tcl來(lái)改變線程數(shù),但每打開(kāi)工程后都要重新設(shè)置一下,多線程會(huì)使綜合實(shí)現(xiàn)的時(shí)間縮短,但效果并不是很明顯;網(wǎng)上有個(gè)工程師說(shuō)本來(lái)2線程1小時(shí)編譯完的工程,用了8線程后,編譯時(shí)間為50分鐘;
在多個(gè)design runs時(shí),jobs的數(shù)量是當(dāng)前可以同時(shí)運(yùn)行的design run的個(gè)數(shù)。
原文標(biāo)題:Vivado中jobs和threads的區(qū)別?選擇多個(gè)jobs能加快實(shí)現(xiàn)速度么?
文章出處:【微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1650文章
22207瀏覽量
626868 -
編譯
+關(guān)注
關(guān)注
0文章
682瀏覽量
34776 -
Vivado
+關(guān)注
關(guān)注
19文章
844瀏覽量
70071
原文標(biāo)題:Vivado中jobs和threads的區(qū)別?選擇多個(gè)jobs能加快實(shí)現(xiàn)速度么?
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于FPGA實(shí)現(xiàn)FOC算法之PWM模塊設(shè)計(jì)

基于FPGA的壓縮算法加速實(shí)現(xiàn)

FPGA從0到1學(xué)習(xí)資料集錦
適用于Versal的AMD Vivado 加快FPGA開(kāi)發(fā)完成Versal自適應(yīng)SoC設(shè)計(jì)

MATLAB中的simulink中仿真速度過(guò)慢,狀態(tài)量數(shù)值很小可以忽略,怎么忽略較小數(shù)值,加快仿真進(jìn)度呢?
導(dǎo)遠(yuǎn)科技產(chǎn)品賦能比亞迪“天神之眼”高階智駕系統(tǒng)
想選擇一款能夠實(shí)現(xiàn)多個(gè)通道數(shù)據(jù)采集的ADC,求推薦
在ARM上實(shí)現(xiàn)模擬視頻的實(shí)時(shí)解碼,模擬相機(jī)的速度為1080p 30fps,TVP5150能達(dá)到這個(gè)速度嗎?
基于Agilex 5 FPGA的模塊系統(tǒng)介紹

AFE4410和AFE4420都支持多個(gè)外接PD,這些分布式PD位置是可以隨便放置的嗎?
FPGA 實(shí)時(shí)信號(hào)處理應(yīng)用 FPGA在圖像處理中的優(yōu)勢(shì)
TLC5602能實(shí)現(xiàn)輸出40MHZ的速度嗎?
LMK05318在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?
基于FPGA實(shí)現(xiàn)FIR數(shù)字濾波器

評(píng)論