本文概览
因为NI LabVIEW是数据流编程语言,开发者们可以编写并行的应用程序,这些应用程序可以直接映射到并行的硬件(如多核心处理器和FPGA等)上以获得最优异的性能。这篇白皮书讨论了什么是数据流编程以及为什么说NI LabVIEW是多核系统编程的首选。
免费午餐结束了
近几年来,处理器的速度遭遇到了瓶颈。摩尔定律表明,每隔18~24个月芯片中晶体管的数量就会增加一倍。这在过去的40年里始终是适用的,但是芯片性能却不再保持线性增加了。过去,芯片生产厂商通过增加处理器的时钟速度来提高芯片的性能,如从100~200MHz,再到最近的数GHz的范围。
但是在今天,由于功耗和散热的限制,通过提高时钟速度来增加性能的方法行不通了。芯片厂商开始转向另一种全新的芯片构架,就是在单芯片上集成多个处理器内核。相对于单核处理器,程序员们可以使用多核处理器完成更多的任务。为了充分利用多核处理器,程序员们需要重新考虑开发应用程序的方法。微软公司的软件设计师Herb Sutter曾说过,对于那些期望最终用户简单的将计算机升级到更快的处理器就可以立即看到软件程序性能提升的开发者而言,“免费午餐结束了”。简而言之,在相当长的一段时间里,软件开发是这样的,但是现在情况不同了。
正在转向在单个处理器上集成多个核心的方法。
顺序执行的程序在处理器的速度提升后将得到性能的改善,将电脑升级到更快的CPU意味着一个序列中每个单独的指令都将运行得更快。为了在多核系统中继续获得性能提升,你需要设计一个在内核间分配任务的应用程序,从本质上说来就是开发并行应用程序来取代顺序执行的程序。
LabVIEW――一种图形化数据流式编程语言
在LabVIEW中开发应用程序的主要优势是这种语言有着直观、图形化的特点。在LabVIEW中,用户解决工程问题就像是在纸上画框图一样。现代多核处理器技术使得LabVIEW成为一种更适合的编程工具,因为它有着并行化表达和执行任务的能力。
LabVIEW的数据流特性使得如果连线中存在着分支,或者是框图中存在并行序列,那么LabVIEW执行机构会尝试着并行的执行程序。在计算机科学术语中,这称为“潜在的并行化”,因为你不需要根据并行运行的需要明确地编写并行代码,编程语言自己会进行一定程度的并行化。
从单核到双核计算机,理论上讲,获得的性能应该是原来的两倍。但是,与这个极限接近的程度取决于用户应用程序运行的并行化程度。LabVIEW程序员们可以很方便的以并行方式来表示他们的解决方案。对于普通的LabVIEW应用程序而言,如果不考虑多核心编程技术,在不改写代码的情况下,与最初的程序相比,可以获得25%到35%的性能提升,这都是缘于普通LabVIEW程序所具有的并行特性。
图2是一个简单的应用程序的例子。其中,LabVIEW代码中的分支简化了两个分析任务――一个滤波器操作和一个快速傅立叶变换(FFT),使它们可以在双核机器上并行执行。在图表中没有显示的性能测试代码,它首先在单核模式下(关掉其中的一个核)运行“for loop”一次,然后在双核的模式下运行。因为这两项任务都是计算量很高的,利用任务并行化获得的性能改进为原来的1.8倍。
基于文本的编程语言如C语言等,在代码中利用特殊标记来表示并行化代码,创建并行任务(也就是创建独立的线程)。管理这些多线程的应用程序将是一个挑战。
在C语言中,用户必须使用锁操作、互斥量、原子操作和其他高级编程技术来管理同步。当多线程变得难于跟踪调试,通常的编程缺陷便出现了,如下所示:
1. 由于线程太多而导致效率低下。
2. 死锁――线程一直在等待某些而不能进行处理。
3. 竞争状况- 代码运行的时序没有被正确管理,在需要数据时,数据不是没有准备好就是已经被覆盖掉了。
4. 存储器冲突――与代码中存储器管理相关的问题。
由于使用C语言进行开发面临的这些挑战,LabVIEW程序员们可以获得比以往更高的效率。
LabVIEW是利用实时SMP支持,处于“Multicore Ready”软件层的最上层Intel公司定义了用户需要评估的四个软件层次来确定多核系统的可用程度。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个核心上进行负载均衡,那么并行程序在多核心系统上并不会运行得更快。
审核编辑 黄宇
因为NI LabVIEW是数据流编程语言,开发者们可以编写并行的应用程序,这些应用程序可以直接映射到并行的硬件(如多核心处理器和FPGA等)上以获得最优异的性能。这篇白皮书讨论了什么是数据流编程以及为什么说NI LabVIEW是多核系统编程的首选。
免费午餐结束了
近几年来,处理器的速度遭遇到了瓶颈。摩尔定律表明,每隔18~24个月芯片中晶体管的数量就会增加一倍。这在过去的40年里始终是适用的,但是芯片性能却不再保持线性增加了。过去,芯片生产厂商通过增加处理器的时钟速度来提高芯片的性能,如从100~200MHz,再到最近的数GHz的范围。
但是在今天,由于功耗和散热的限制,通过提高时钟速度来增加性能的方法行不通了。芯片厂商开始转向另一种全新的芯片构架,就是在单芯片上集成多个处理器内核。相对于单核处理器,程序员们可以使用多核处理器完成更多的任务。为了充分利用多核处理器,程序员们需要重新考虑开发应用程序的方法。微软公司的软件设计师Herb Sutter曾说过,对于那些期望最终用户简单的将计算机升级到更快的处理器就可以立即看到软件程序性能提升的开发者而言,“免费午餐结束了”。简而言之,在相当长的一段时间里,软件开发是这样的,但是现在情况不同了。
正在转向在单个处理器上集成多个核心的方法。
顺序执行的程序在处理器的速度提升后将得到性能的改善,将电脑升级到更快的CPU意味着一个序列中每个单独的指令都将运行得更快。为了在多核系统中继续获得性能提升,你需要设计一个在内核间分配任务的应用程序,从本质上说来就是开发并行应用程序来取代顺序执行的程序。
LabVIEW――一种图形化数据流式编程语言
在LabVIEW中开发应用程序的主要优势是这种语言有着直观、图形化的特点。在LabVIEW中,用户解决工程问题就像是在纸上画框图一样。现代多核处理器技术使得LabVIEW成为一种更适合的编程工具,因为它有着并行化表达和执行任务的能力。
LabVIEW的数据流特性使得如果连线中存在着分支,或者是框图中存在并行序列,那么LabVIEW执行机构会尝试着并行的执行程序。在计算机科学术语中,这称为“潜在的并行化”,因为你不需要根据并行运行的需要明确地编写并行代码,编程语言自己会进行一定程度的并行化。
从单核到双核计算机,理论上讲,获得的性能应该是原来的两倍。但是,与这个极限接近的程度取决于用户应用程序运行的并行化程度。LabVIEW程序员们可以很方便的以并行方式来表示他们的解决方案。对于普通的LabVIEW应用程序而言,如果不考虑多核心编程技术,在不改写代码的情况下,与最初的程序相比,可以获得25%到35%的性能提升,这都是缘于普通LabVIEW程序所具有的并行特性。
图2是一个简单的应用程序的例子。其中,LabVIEW代码中的分支简化了两个分析任务――一个滤波器操作和一个快速傅立叶变换(FFT),使它们可以在双核机器上并行执行。在图表中没有显示的性能测试代码,它首先在单核模式下(关掉其中的一个核)运行“for loop”一次,然后在双核的模式下运行。因为这两项任务都是计算量很高的,利用任务并行化获得的性能改进为原来的1.8倍。
基于文本的编程语言如C语言等,在代码中利用特殊标记来表示并行化代码,创建并行任务(也就是创建独立的线程)。管理这些多线程的应用程序将是一个挑战。
在C语言中,用户必须使用锁操作、互斥量、原子操作和其他高级编程技术来管理同步。当多线程变得难于跟踪调试,通常的编程缺陷便出现了,如下所示:
1. 由于线程太多而导致效率低下。
2. 死锁――线程一直在等待某些而不能进行处理。
3. 竞争状况- 代码运行的时序没有被正确管理,在需要数据时,数据不是没有准备好就是已经被覆盖掉了。
4. 存储器冲突――与代码中存储器管理相关的问题。
由于使用C语言进行开发面临的这些挑战,LabVIEW程序员们可以获得比以往更高的效率。
LabVIEW是利用实时SMP支持,处于“Multicore Ready”软件层的最上层Intel公司定义了用户需要评估的四个软件层次来确定多核系统的可用程度。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个核心上进行负载均衡,那么并行程序在多核心系统上并不会运行得更快。
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
FPGA
+关注
关注
1655文章
22287浏览量
630300 -
芯片
+关注
关注
462文章
53535浏览量
459148 -
LabVIEW
+关注
关注
2013文章
3681浏览量
344312 -
C语言
+关注
关注
183文章
7642浏览量
144617 -
编程
+关注
关注
90文章
3707浏览量
96765
发布评论请先 登录
相关推荐
热点推荐
一张表看懂:迈威选择性波峰焊视觉编程系统的“快、准、稳”
、定位偏差等导致的精度问题。 迈威选择性波峰焊视觉编程系统以创新的实时在机视觉编程技术,彻底改变了这一现状。该系统通过高精度工业相机直接对已装夹的PCB板进行快速扫描与成像,使
思尔芯邀您共聚 FPT 2025,赋能可编程技术新未来
可编程技术盛会,聚焦可重构计算设备与系统、现场可编程器件等关键领域。FPT不仅是技术交流的平台,更是推动产学研深度融合、激发创新灵感的重要契机。思尔芯作为国内首家数
一文了解Mojo编程语言
编程能力
允许直接进行系统调用和文件操作,提供类似 Rust 的内存安全机制(所有权和借用检查),避免运行时错误。
支持零成本抽象,开发者无需牺牲性能即可编写高层代码。
并行与异构计算
内置对多核
发表于 11-07 05:59
请问系统编程 (ISP) 工具支持哪些接口进行系统升级?
ISP工具支持多种接口进行系统升级,包括UART、USB、I2C、SPI、CAN、RS485、I/O和以太网,并提供开源代码供用户修改以符合自己的系统环境。
发表于 08-18 07:40
【老法师】多核异构处理器中M核程序的启动、编写和仿真
有很多研究单片机的小伙伴在面对多核异构处理器时,可能会对多核的启动流程感到困惑——因为不熟悉GCC编程和GDB调试,所以也无法确定多核异构处理器的程序是否能像单片机那样方便地编写和仿真
全志科技多核异构SoC助力行业智能化创新
近日, “第十二届开源操作系统年度技术会议”在北京举行,全志科技受邀参会。会上,全志进行了题为《多核异构SoC在行业应用中软件方案的思考与实践》的分享。分享从市场和技术洞察、方案设计创
浅谈直流有刷电机驱动及调速技术
,图1 为 H 桥电机驱动 电路示意图 :
图1 H桥电机驱动电路示意图
点击下方附件查看全文*附件:20250307_浅谈直流有刷电机驱动及调速技术.docx
发表于 03-07 15:24
浅谈车规MCU (MGEQ1C064) OTA升级
upgrade)即空中下载技术,简单来说,是通过外部方式(有线或无线)对产品进行更新,而不是传统的编程器刷入固件的方式。
随着智能网联汽车技术的飞速发展,OTA技术已逐渐渗透至汽车领
发表于 03-04 12:52
2024年AI编程技术与工具发展总结
数据进行多方位的总结和梳理。 在第二章《TOP 101-2024 大模型观点》中,同济大学特聘教授、CCF 杰出会员 朱少民 对 2024 年 AI 编程技术与工具发展进行了总结。 全文如下
SEGGER SystemView支持多核行为的观察和验证
2025年2月,SEGGER宣布其实时软件验证和可视化工具SystemView增加了多核支持,将其功能扩展到单个芯片上具有多个CPU内核的系统。
迅为RK3588开发板实时系统编译-Preemption系统/ Xenomai系统编译-编译Linux实时系统
这里以 buildroot 系统为例(其他 Linux 系统编译步骤同)。
Buildroot 是一款集成的编译集合包,解决了以前交叉编译麻烦的问题,本小节将介绍buildroot 镜像的编译流程
发表于 01-21 14:15
QorIQ®T1042多核处理器
。QorIQ®T1042多核处理器适合于路由器、交换机、网关ip和通用型内嵌式计算系统中的组合控制、数据路径和传输层处理。与多个分立器件相比,QorIQ®T1042多核处理器高度集成提供明显的性能优势,同时也
发表于 01-10 08:48
迅为RK3588开发板实时系统编译-Preemption系统/ Xenomai系统编译-获取Linux源码包
3.1 Preemption 系统/ Xenomai 系统编译
3.1.1 获取 Linux 源码包
编译环境说明:
本手册使用的是迅为提供的编译环境 ubuntu20.04,在网盘资料
发表于 01-09 11:03

浅谈多核系统编程技术
评论