新闻中心

EEPW首页>测试测量>设计应用> 如何创建及谐调支持多核的LabVIEW x86客户DLL

如何创建及谐调支持多核的LabVIEW x86客户DLL

作者: 时间:2009-05-20 来源:电子产品世界 收藏

  注释:循环未作向量化处理

本文引用地址://m.amcfsurvey.com/article/94541.htm

  反汇编生成代码后可看到编译器插入了SIMD扩展指令集(SSE)。该指令集的使用直接提升了应用的运行性能,代码运行速度提高了2倍。

  这类优化可应用于目前大多数CPU 上,这里我们在Core 2 处理器上运行,当然您也可以在单核或早期CPU 上应用。

  自动并行化

  因为采用多核PC,我们会更感兴趣如何通过QParallel 选项,让代码在两核上同时运行,以获得进一步提速。该选项在编译目标中插入了库调用。库调用提供了运行时所需的控制,使应用中的组件得以并行。

  在首次运行中,编译器并未显著提高运行性能。通过开启编译器的报告功能,可以看到它并未进行优化。

  注释:循环未作并行化处理,循环无需并行化

  Intel编译器要对一段代码进行自动并行化时,首先决定是否有值得进行并行化的代码部分。在我们的代码中由一个主循环完成所有工作。编译器不能确定循环的重复次数,循环计数值只有在运行时得到。于是编译器采取谨慎选择,不对循环进行并行化处理。

  我们可以通过在命令行输入/Qpar-threshold:n 来进行试探优化,这里n 是介于0(总是并行处理)到100(不进行并行处理)的数,这个值决定了试探优化的程度。

  输入/Qpar-threshold:0 后,编译器对代码并行化,并输出报告:

  注释:循环已作自动并行化处理

  使用该优化后,程序的运行速度比默认设置下提高了近2 倍。

  其它优化选项

  本范例中,我们关注自动向量化及自动并行化。Intel C++ 编译器利用一系列其它优化技术,包括高层优化、交叉过程优化、配置向导优化、速度优化、代码大小优化、快速浮点处理等。



关键词:NILabVIEWX86

评论


相关推荐

技术专区

关闭