广州菱控自动化科技有限公司
主营:欧姆龙,三菱,安川,Pro-face
首页 > 解决方案 > 冶金_软件 > 如何创建及谐调支持多核的LabVIEW x86客户DLL
行业类别
全部 航空航天 新能源 冶金 石油 石化 化工 汽车 建材 包装 造纸印刷 纺织印染 机械 机床 木工 矿业 塑胶 交通 铁路 机场 港口 仓储 物流 能源 电力 输配电 水利 环保水处理 电子 食品饮料 制药医疗 烟草 电梯 网络通讯 市政 商业 楼宇 安防 锅炉供暖 制冷 金融保险 邮政 广电 军工 机器人 其它
产品类别
全部 PLC 变频器 伺服 DCS 触摸屏 传感器 机器视觉 仪器仪表 工业以太网 现场总线 工控机 嵌入式 数据采集 软件 低压电器 数传 电源 数控 机柜箱体 工具 单片机 流体 工业安全 安防 媒体 其它

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

发布日期:2022/8/17
The Challenge:
  对NI LabVIEW软件自动生成的外部代码进行最优化,在x86构架下获得最大性能,进而测量目标系统中DLL性能。 
The Solution:
  在不修改源代码的条件下,通过Intel C++ 编译器在单核PC上实现2.5 倍提速,通过编译器中的各类最优化选项在双核PC 上实现超过4.5 倍提速。 
  "VTune能够监测许多不同种类的构架事件。VTune调谐助手能够给出如何更好使用这些事件的建议。"
  本应用包括了两个组件——用于计算Pi 值的DLL、调用DLL 库函数的LabVIEW 应用,可将结果显示在图形用户界面中。
  为计算Pi 值,我们采用了近似综合技术,需要在单个循环中完成数百万次浮点计算。选择该范例是因为它是CPU 密集型的,并且是可优化的应用。如下所示为外部代码的主循环结构,CPU的主要计算量是处理CalcSum 函数。
for(i=0; i<num_steps; i++)

sum = CalcSum(i, sum, step);

  我们的目标是通过编译器中的优化选项以最快速度完成上述计算。
  应用中有4 个函数,均包含于独立源文件中。我们采用不同优化开关来编译每个源文件。如图1 所示。

                表1.应用中的函数
“即插即用”的Intel C++ 编译器
  我们采用即插即用的Intel C++ 来代替Microsoft 编译器,它可以轻松地集成到现有Microsoft Visual Studio DLL 工程中。更多关于Intel 编译器,请访问intel.com/software。
默认设置
  测量首先以/O2选项创建应用,许多优化都是在这个层面上进行的。本文在此不讨论其细节问题。表2显示了/O2选项集成的各个优化设置。

           表2./O2 选项中集成的最优化列表
自动向量化
  自动向量化得益于新一代CPU 中集成的复杂指令集。多数现代CPU构架可扩展支持数据操作及多数据计算。扩展包括支持以单一指令实现多重计算(单指令多数据流,或称SIMD)。Intel 编译器能够分析代码,并通过SIMD 指令显著提高代码的效率。
  本范例中,编译器通过\QT 选项生成适合Core 2 构架的代码,编译器报告以下创建时间信息:
注释:循环未作向量化处理
  反汇编生成代码后可看到编译器插入了SIMD扩展指令集(SSE)。该指令集的使用直接提升了应用的运行性能,代码运行速度提高了2倍。
  这类优化可应用于目前大多数CPU 上,这里我们在Core 2 处理器上运行,当然您也可以在单核或早期CPU 上应用。
自动并行化
  因为采用多核PC,我们会更感兴趣如何通过\QParallel 选项,让代码在两核上同时运行,以获得进一步提速。该选项在编译目标中插入了库调用。库调用提供了运行时所需的控制,使应用中的组件得以并行。
  在首次运行中,编译器并未显著提高运行性能。通过开启编译器的报告功能,可以看到它并未进行优化。
注释:循环未作并行化处理,循环无需并行化
  Intel编译器要对一段代码进行自动并行化时,首先决定是否有值得进行并行化的代码部分。在我们的代码中由一个主循环完成所有工作。编译器不能确定循环的重复次数,循环计数值只有在运行时得到。于是编译器采取谨慎选择,不对循环进行并行化处理。
  我们可以通过在命令行输入/Qpar-threshold:n 来进行试探优化,这里n 是介于0(总是并行处理)到100(不进行并行处理)的数,这个值决定了试探优化的程度。
  输入/Qpar-threshold:0 后,编译器对代码并行化,并输出报告:
注释:循环已作自动并行化处理
  使用该优化后,程序的运行速度比默认设置下提高了近2 倍。
其它优化选项
  本范例中,我们关注自动向量化及自动并行化。Intel C++ 编译器利用一系列其它优化技术,包括高层优化、交叉过程优化、配置向导优化、速度优化、代码大小优化、快速浮点处理等。
Intel 编译器同时支持OpenMP 这个基于pragma 的标准,用于实现应用代码的并行化。
测量性能
  本范例中我们采用Win32 API 的定时函数,并将定时计算嵌入外部代码。计算时间在LabVIEW 应用GUI 中显示。
  作为备选,我们还可采用LabVIEW的定时工具,或采用外部工具,如Intel VTune 性能分析器。
  VTune能够监测许多不同种类的构架事件。VTune调谐助手能够给出如何更好使用这些事件的建议。
结论
  不同开关的优化结果在表3 中列出。我们在双核PC 上运行,并通过默认优化(/O2)作为基准来计算提速。

                表3.不同优化方式下的速度提高
  在应用自动向量化时可达到2.5倍速,该优化专用于非多核处理器,可用于目前多数CPU。
  在应用自动并行化后可实现接近2 倍的提速。结合两种优化更可达到4.6 倍。
  以上结果是在不修改源代码的前提下实现的。尽管我们选择了模拟应用(计算Pi值),但这类优化技术能够用于各类实际应用。从Intel编译器用户反馈中了解到,使用这些优化方式可显著提高代码执行速度。

如果您有任何问题,请留言给NI工程师,我们会尽快给您回电!
  • 如何使用Moxa远程I/O节省大桥灯光控制系统的布线成本
    如何使用Moxa远程I/O节省大桥灯光控制系统的布线成本

    项目描述世界领先的LED照明设计师在澳大利亚Gateway Bridge 灯光控制系统中,选用了Moxa ioLogik E1212远程I/O。负责桥梁建设维护的市府部门决定采用网络架构来实现桥梁的

  • 紧凑型工业级无线客户端在AGV系统中的应用
    紧凑型工业级无线客户端在AGV系统中的应用

    使用产品:AWK-1121/1127系列国家/城市:中国更新日期:2012-07-03随着现代仓储管理系统的不断提升,工程人员采用大量的AGV(自动导引车)来替代传统的人工叉车,这样可以降低运营成本

  • 韩国仁川机场“零”新冠确诊,到底是如何做到的呢?
    韩国仁川机场“零”新冠确诊,到底是如何做到的呢?

    机场体温筛查分三步2020年3月3日起,仁川国际机场启用三步筛查方案,旨在识别所有出港航班上的体表温度升高的人员。所有机场用户被要求接受总共三次体表温度升高筛查检测:分别在出发层入口,出入境通关口和

  • 奥圣变频器的售后服务诚邀广大客户建言献策
    奥圣变频器的售后服务诚邀广大客户建言献策

    一老客户来电:别的品牌的变频器坏了,能不能也帮我们修一下?销售部冯经理一早接到客户电话。可以的,是怎么一台变频器?什么品牌?多大的?出什么问题了?***变频器,55kw,拉丝机上用的,一开就跳Uu报

  • 跨平台实时数据库如何实现表格的保存和读取
    跨平台实时数据库如何实现表格的保存和读取

    跨平台实时数据库提供了表格的保存和读取功能,可以将表格中内容保存至本地TXT或HTML文件,在EXCEL或浏览器中查看。也可以使用报表读取编辑好的EXCEL文件。配合脚本系统,可以实现退出窗口自动

  • 智能抓取 看ALSONTECH 机器人 3D定位系统如何“眼明手捷”
    智能抓取 看ALSONTECH 机器人 3D定位系统如何“眼明手捷”

    AT-S1000系列3D定位系统AT-S1000系列机器人3D定位系统结合多项激光扫描、相机定向技术对工件进行快速扫描,经强大的三维分析软件高效智能的分析,向机器人提供精确的定位数据,引导机器人将工

  • 政策当下 分布式光伏与电网如何共同发展?
    政策当下 分布式光伏与电网如何共同发展?

    政策当下 分布式光伏与电网如何共同发展?关键词: DSP 整流 逆变 PWM 矢量控制 变频器 伺服 PLC变频驱动设备解决方案伺服驱动器生产方案提供商深圳市伊瑞软件技术有限公司近年来我国十分重视光

  • PLC编程软件如何借助HiNet工业网关实现远程程序上下载
    PLC编程软件如何借助HiNet工业网关实现远程程序上下载

    工业现场的情况错综复杂,需要工程师经常对设备进行远程调试与程序的上下载,而随着可编程控制器PLC在设备上的普遍应用,如何能通过plc编程软件对plc实现远程编程和程序上下载,是很多工程师们都关心的问

销售热线

销售微信