LabVIEW论坛
直播中

荣琪

8年用户 689经验值
擅长:可编程逻辑 测量仪表 嵌入式技术
私信 关注
[文章]

LabVIEW代码加速之多核并行技术

大家好,我是Richie,今天简单讲一点代码优化方法,用代码的形式设置多核并行,来大大加速数据处理速度。这种方法就像流水线作业,每一个节点都在同时运作,并将结果传送给下一个节点。

我写了个小Demo来更直观的演示。
我们的Demo功能如下,首先我们采用“串行”方法,此时数据处理总耗时是所有算法耗时之和。
串行测试1.gif
随后,我们转而采用“并行”方法,可以看到总耗时缩减到原先的1/4,运行速度提升了4倍。这是比较理想的情况,4个算法耗时均相等。此时并行速度就取决于你的算法个数和CPU核数了。
b行测试1.gif
当然,实际情况下各算法耗时很难做到完全相等。因此并行的速度将取决于耗时最长的那个算法。如下图所示,我仅将算法3的耗时加大到80ms,可见总耗时也变为80ms。
b行测试2.gif

可见,使用并行技术能够大大加速我们的代码运行,但前提是这部分代码在逻辑上可以采用“流水线”。而且运行速度一般受限于耗时最长的部分,要想取得最快的速度,这就要求我们能够合理分配各Vi的耗时。

源代码比较简单我就不上传耗费大家积分了,上一点图片吧。
源代码片段:串行
串行.png
源代码片段:多核并行
多核并行代码

PS:细心的同学可能会发现,在程序刚开始运行时,并行运行的代码会传递出错误值,这很好理解,就像流水线首次开始运行一样,此时靠后的节点没有输入,那么输出当然会出错。如果不能容忍这种错误,那么就要考虑其他方法去除啦。^_^

回帖(4)

荣琪

2021-2-10 00:00:27
额,发布后发现代码有点小问题,应该将元素出队列的错误连接到左边的顺序结构上,这样耗时会更准确。
举报

空腹今天

2021-2-18 15:05:28
嗯,你这个程序严格来说是每个程序处理上一次的结果,这样会使得程序结束时,有三个数据没有处理,需要再有三个循环才能将所有数处理完成,对于一些要求严格的地方还是有点不合适的
1 举报
  • 荣琪: 是的是的^_^  类似工厂的流水线,停下的一瞬间肯定还有半成品在产线上。

jf_96891168

2021-3-5 10:40:40
您好,我想问一下,那个多核并行程序中数据处理1和数据处理2之间的那个函数是什么啊!起什么作用呢
1 举报
  • 荣琪: 反馈节点 帮助文档应该有的

哎呦

2022-4-10 18:01:40
学习了学习了,还是很有用的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分