FPGA之选择多个jobs能加快实现速度么?

在用vivado对工程编译时,会弹出下面的对话框:
备注:虽然fpga不能叫编译,但很多工程师为了方便起见,将综合+实现+生成bit文件的过程统称为编译了,这种说法大家理解就好。
很多工程师都会选择多个jobs进行编译,以为这样会更快一些,而且这个jobs的数量跟本地cpu的线程数是一致的,这就更加让工程师们认为这个选项就是多线程编译了。
但对vivado更加熟悉的工程师,肯定会知道,vivado中的多线程是通过tcl脚本去设置的,而且目前最大可使用的线程数是8个,那这个jobs跟多线程有什么关系呢?使用多个jobs能加快编译速度么?
我们首先来看jobs的定义,在ug904中这样写道:
因此,这个jobs是我们在同时有多个runs在跑的时候才起效的,如果只有一个design run,那这个参数是不起效的。
对于多线程,在ug904中是这样说的:
implementation过程,最多使用8个线程,在windows上,默认是2线程;在linux上,默认是8线程;我们可以通过tcl脚本改变线程数,使用方式为:
set_param general.maxthreads 8
也可以获取当前使用的线程数:
get_param general.maxthreads
为了更直观的体现jobs和threads的使用方式,下面进行惨无人道的试验:
首先,处理器为intel的i7-8700k,6核12线程,下面记录的时间仅是implementation的时间,不包括synthesis。
test1为默认的2线程,最大jobs(12)的情况下,需要19min;
test2把jobs降为1,线程还是2,仍然需要19min,说明在只有一个design run的时候,jobs的数量不影响编译时间;
test3是采用8线程,jobs跟test1相同,都是12,此时需要17min,比默认的2线程快了2min;
test4是在8线程的基础上,把jobs降为1,此时还是17min,再次验证了单个design run时,jobs的数量不影响编译时间;
test5是总共有6个implementation的design runs,采用8线程12jobs同时跑;
在下面这个图中也可以看出来,此时cpu的利用率已经很高了。
test6也是6个implementation的design runs,8线程,但jobs设置为1,此时可以看出,只有一个design run在跑,其他都在等待中,要等这个前一个跑完后,后面的才会开始。
test112219min
test21219min
test312817min
test41817min
test512838min
test618120min
numjobsthreadstime
从上面的试验,我们可以总结如下:
对于单个design run,jobs的数量不影响编译速度;
在windows上,默认的线程数是2,我们可以通过tcl来改变线程数,但每打开工程后都要重新设置一下,多线程会使综合实现的时间缩短,但效果并不是很明显;网上有个工程师说本来2线程1小时编译完的工程,用了8线程后,编译时间为50分钟;
在多个design runs时,jobs的数量是当前可以同时运行的design run的个数。
原文标题:vivado中jobs和threads的区别?选择多个jobs能加快实现速度么?
文章出处:【微信公众号:openfpga】欢迎添加关注!文章转载请注明出处。


索尼发布大屏电纸书新品DPT
Adobe推出Adobe Aero 可以将Photoshop文件转换为增强现实
一个IGBT用不同的驱动板会得到不一样的效果吗?为什么?
美国传来一个坏消息,苹果用户要注意了!
微软亚洲研究院自然语言计算组全新力作
FPGA之选择多个jobs能加快实现速度么?
丢了618第一后,OPPOR11开启疯狂营销,新增六位女星助阵,有钱任性
12v铅酸蓄电池型号有哪些
金立旗舰机M2017亮点多,这样瞄准高端政商人群
炫龙游戏本:让游戏成为生活的一部分
语音数据集在智能语音搜索中的应用与挑战
如何使用浪涌电流限制器NTC
虹科案例 | Dimetix 激光测距传感器: 纸(布)卷直径与宽度的自动测量
设备预测性维护解决方案的介绍
博士科技与深圳大学创新验证中心达成战略合作
Cadence 再次荣登2016卓越职场研究所“大中华区最佳职场”30佳榜单
西门子S7-200 SMART PLC顺序功能图设计方法
果粉福利来袭:处理器A11大量交货!iPhone8如期发布/开卖终于有戏了?
大华极光球:卓越工业设计 适应复杂室外环境
任天堂和腾讯正式确认,双方将合作共同推出Switch国行版