本文概览
因为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
+关注
关注
1664文章
22571浏览量
640752 -
芯片
+关注
关注
463文章
54632浏览量
470913 -
LabVIEW
+关注
关注
2025文章
3691浏览量
349314 -
C语言
+关注
关注
183文章
7649浏览量
146401 -
编程
+关注
关注
90文章
3725浏览量
97527
发布评论请先 登录
相关推荐
热点推荐
嵌入式以太网原型开发套件:探索嵌入式系统编程的理想选择
嵌入式以太网原型开发套件:探索嵌入式系统编程的理想选择 在电子工程师的日常工作中,拥有一套功能完备、易于使用的开发套件对于项目的开展至关重要。今天,我们就来详细介绍一款嵌入式以太网原型开发套件,它
XUF212 - 512 - FB236:多核微控制器的强大之选
XUF212 - 512 - FB236:多核微控制器的强大之选 在嵌入式系统的广阔领域中,多核微控制器正逐渐成为提升系统性能、实现复杂功能的关键组件。今天,我们将深入探讨 XMOS
XUF216-512-TQ128:高性能多核微控制器的深度剖析
XUF216-512-TQ128:高性能多核微控制器的深度剖析 在嵌入式系统设计领域,多核微控制器的应用越来越广泛,它们为复杂的实时任务提供了强大的处理能力。今天,我们就来深入探讨一款性能卓越的
F28M36x Concerto™ 微控制器:多核心系统的工业控制利器
F28M36x Concerto™ 微控制器:多核心系统的工业控制利器 一、引言 在工业控制和自动化领域,对于高性能、高可靠性的微控制器需求日益增长。F28M36x Concerto™ 微控制器凭借
寻找对RISCV众核并行计算感兴趣的伙伴、朋友
函数分配到不同的CPU上并行运行。使C/C++/Verilog/Java/OpenCL等也变成并行编程语言,即传统编程语言的并行化。
多核间通信方式包括共享变量自动复制,事件通知,远程函数调用,队列
发表于 03-28 14:41
寻找对RISCV众核并行计算感兴趣的伙伴
函数分配到不同的CPU上并行运行。使C/C++/Verilog/Java/OpenCL等也变成并行编程语言,即传统编程语言的并行化。
多核间通信方式包括共享变量自动复制,事件通知,远程函数调用,队列
发表于 03-28 14:37
揭秘!三步让Debian系统编译速度起飞,告别重复下载资源的烦恼
在 Debian 系统编译的过程中,重复构建系统和动态下载相关资源往往会消耗大量时间,拖慢开发和部署进度。今天,我们就通过分析一组代码修改,来探索如何优化 Debian 系统编译,实现高效编译,减少不必要的时间浪费。
C语言嵌入式系统编程注意事项-内存操作
C语言嵌入式系统编程注意事项之内存操作
在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力
发表于 01-04 07:31
京微齐力亮相2025国际现场可编程技术大会
12月2日-5日,2025年国际现场可编程技术大会(FPT)在上海成功举办,京微齐力应邀参加此次行业盛会,与全球领先的行业专家学者,共同探讨可编程技术的创新与发展。
一张表看懂:迈威选择性波峰焊视觉编程系统的“快、准、稳”
、定位偏差等导致的精度问题。 迈威选择性波峰焊视觉编程系统以创新的实时在机视觉编程技术,彻底改变了这一现状。该系统通过高精度工业相机直接对已装夹的PCB板进行快速扫描与成像,使
思尔芯邀您共聚 FPT 2025,赋能可编程技术新未来
可编程技术盛会,聚焦可重构计算设备与系统、现场可编程器件等关键领域。FPT不仅是技术交流的平台,更是推动产学研深度融合、激发创新灵感的重要契机。思尔芯作为国内首家数
一文了解Mojo编程语言
编程能力
允许直接进行系统调用和文件操作,提供类似 Rust 的内存安全机制(所有权和借用检查),避免运行时错误。
支持零成本抽象,开发者无需牺牲性能即可编写高层代码。
并行与异构计算
内置对多核
发表于 11-07 05:59
【老法师】多核异构处理器中M核程序的启动、编写和仿真
有很多研究单片机的小伙伴在面对多核异构处理器时,可能会对多核的启动流程感到困惑——因为不熟悉GCC编程和GDB调试,所以也无法确定多核异构处理器的程序是否能像单片机那样方便地编写和仿真
浅谈多核系统编程技术
评论