由于多线程编程的复杂性,很多计算机方面的专家都在进行探索,希望让编译器来帮助开发人员处理并行性的问题。如果没有这种编译系统,开发人员必须自己来处理并行编程,双核处理器的多线程编程已经是相当的复杂,如果以后发展到80个核,其复杂度将令开发人员无法应付。对于学习计算机编程或软件工程的开发人员来说,或许文本编程的并行编程机制并不足以难倒他们,可是对于其他领域的专业人员,如果他们并不擅长编程,又想要享受一下多核处理器带来的高性能,那么NI公司的图形化的开发环境LabVIEW可能是他们的理想之选。
LabVIEW是一个基于数据流的图形化开发平台,它提供了直观、符合工程师思维习惯的图形化编程方式和用户界面,在LabVIEW中,用户解决工程问题就像是在设计他们所熟悉的流程图一样。现代多核处理器使得LabVIEW成为一种更合适的编程工具选择,因为它有着并行化表示和执行任务的能力。和传统的文本编程相比,LabVIEW天生是一种并行结构的编程语言。基于LabVIEW的数据流特性,如果连线中存在着分支,或者是框图中有着并行序列,那么后台的LabVIEW执行器将自动地实现并行化运行。在计算机科学术语中,这称为“潜在的并行化”,因为你不需要根据并行化运行的需要而明确地编写代码,编程语言自己进行一定程度的并行化。LabVIEW编译器分析代码的并行性并在编译的时候将其分为不同的代码段,不同的代码段可以被分配给不同的线程从而平衡执行的负载。当我们在程序框图中通过连线的分岔创建另一个程序分支时,就有可能产生另一个线程。如果我们创建了多个循环,那相对应的也就创建了数个新的执行线程。在LabVIEW中,多个并行循环会自动分配成多个线程并分到多个处理核上,因而LabVIEW用户无需对代码做任何改动,也不需要花时间学习新的编程方式,就可以利用到多核处理器的性能优势。
Intel公司定义了用户需要评估的四层软件层次来确定多核系统的可用程度。如果所用的应用程序库和设备驱动不是为多核而设计的,或者操作系统不能够在多个处理核上进行负载均衡,那么并行化程序在多核系统上是不能够运行得更快的。
软件层次 |
“multicore-ready”的含义 |
LabVIEW支持 |
开发工具 |
为选择的操作系统提供支持,并且提供工具进行来简化线程规划和优化。 |
实例:LabVIEW的多线程特性及允许优化的构架 |
程序库 |
线程安全、可重入库 |
实例:分析库 |
设备驱动程序 |
为多线程性能而优化的驱动构架 |
实例:NI-DAQmx驱动软件 |
操作系统 |
操作系统支持多线程和多任务,并且可以进行任务的负载均衡 |
实例:支持的操作系统包括Windows、Mac OS、Linux和LabVIEW Real-Time操作系统 |