本文概览
因为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
+关注
关注
1626文章
21665浏览量
601792 -
芯片
+关注
关注
453文章
50387浏览量
421776 -
LabVIEW
+关注
关注
1963文章
3652浏览量
322378 -
C语言
+关注
关注
180文章
7598浏览量
136162 -
编程
+关注
关注
88文章
3591浏览量
93592
发布评论请先 登录
相关推荐
工业机器人的四种编程(示教编程、离线编程、自增强现实编程主编程)剖析!
和工作量,提高编程效率,实现编程的自适应性,从而提高生产效率,是机器人编程技术发展的终极追求。本文将就机器人编程技术的发展作一介绍,希望能给读者带来一些启发。对工业
多核CPU的优势是什么
多核CPU(Central Processing Unit,中央处理器)作为现代计算机技术的重要里程碑,其优势在于显著提升了计算性能、多任务处理能力、系统稳定性以及能效比等多个方面。以下将详细阐述
risc-v多核芯片在AI方面的应用
多核芯片在AI方面的应用具有广阔的前景和巨大的潜力。随着技术的不断进步和应用的深入,我们期待看到更多基于RISC-V多核芯片的AI解决方案在实际应用中得到验证和推广。
发表于 04-28 09:20
浅谈物联网技术的电气火灾智能监控系统平台设计
浅谈物联网技术的电气火灾智能监控系统平台设计 张颖姣 安科瑞电气股份有限公司 上海嘉定 201801 摘要:为了提高电气火灾监控效果,该文设计了基于无线通信技术的电气火灾智能监控
浅谈无线物联网技术的电气火灾监控系统设计
浅谈无线物联网技术的电气火灾监控系统设计 张颖姣 安科瑞电气股份有限公司 上海嘉定 201801 摘要:电气故障是引起火灾的重要原因。由于传统的火灾报警器都是独立存在的,不仅没有组网,数据也不同步
浅谈基于物联网技术的无线测温系统设计
浅谈基于物联网技术的无线测温系统设计 张颖姣 安科瑞电气股份有限公司 上海嘉定 201801 摘要: 传统10kV环网柜存在智能化程度低、电缆头故障率高、测温困难等问题,缺乏一种有效的在线测温
多核异构通信框架(RPMsg-Lite)
概要 随着科技的飞速发展,计算需求日益复杂和多样化,传统的单核处理器已难以满足所有应用场景的需求。在这样的背景下,异构多核系统应运而生,成为推动计算领域进步的重要力量。异构多核系统不仅
硕博电子推出一款基于CoDeSys3.5编程技术的高性能主控制器
硕博电子自主研发的移动控制器SPC-SFMC-X2214A,采用了CoDeSys3.5编程技术,为分布式应用场合提供了理想的主控制器解决方案。
AURIX系列MCU多核系统和时钟有关系吗?
AURIX系列MCU多核系统和时钟有关系吗?2.如何系统的理解GTM的时钟结构(以前用的ST的片子,发现英飞凌MCU的时钟树和ST的很不一样,有些时钟实现的功能和原理是一样的)?3.编写应用程序是不是不能脱离底层比较好?
发表于 02-05 06:10
浅谈无线测温系统在电厂的研究和应用
浅谈无线测温系统在电厂的研究和应用 摘要: 采集关键电力设备接电的实时温度,克服有线温度监测系统存在的诸如线路多,布线复杂,维护困难等不足,将无线无源传感器与Zigbee无线通信技术相
浅谈多CPU、多核CPU、超线程技术、SMP
Local APIC: APIC全称是Advanced Programmable Interrupt Controller,翻译过来就是高级可编程中断控制器,用来处理CPU中断。
评论