适用于需要处理大型数据集的NI LabVIEW多核分析和稀疏矩阵工具包介绍

FPGA/ASIC技术

203人已加入

描述

  NI LabVIEW多核分析和稀疏矩阵工具包提供了高性能的LabVIEW多线程分析库,是在线或离线的大数据集处理应用的理想工具。实际上,许多现实世界的问题可以表示为大型线性代数计算,而该工具包可以为这些运算减少所需的资源和总体的计算时间。此外,该工具包包括稀疏线性代数函数,并支持单精度和双精度数据类型。本文介绍了LabVIEW多核分析和稀疏矩阵工具包的用途和推荐用法。

1. 高性能多线程分析

如前所述,NI LabVIEW多核分析和稀疏矩阵工具包提供了一系列高性能、多线程分析库,可以用来处理大型数据集。这些库是专为基于英特尔®数学内核函数库(Intel® MKL)的Windows 操作系统而设计的。该内核库是一个高度优化、多线程化的数学计算函数库,满足最高性能需求的应用。此外,当您将这个工具包与LabVIEW实时模块一同使用时,这些库可以被扩展到LabVIEW实时(ETS)的目标中。因此,用户能够使用多线程线性代数、基本线性代数子程序(BLAS)和基于快速傅立叶变换(FFT)的函数。

LabVIEW

 

图1.多核分析和稀疏矩阵函数选板包含高性能、多线程分析以及稀疏矩阵代数函数。

该工具包提供了各种函数库,每个函数可以更好地利用多核CPU。而且它还包含一组线程管理函数,因此用户可以调整应用程序的线程行为特性。

LabVIEW

 

图2.线程管理函数选板包含有效管理线程的函数。

2. 管理线程

本节以两个矩阵相乘为例来介绍管理线程的方法。管理线程时,首要考虑的是执行函数的系统中可用的内核数。要获得目标系统的CPU特性,可以使用 CPU Information 函数。此外,线程管理函数选板中 的 Get Threads 函数可以在之后立即添加以获取可用线程的最大数量。此函数提供了线性代数、转置以及其它函数相关的可用线程的最大数量信息。这为每个线程或者线程组定义了作用域,并根据具体应用需求提供进一步的管理功能。

LabVIEW

 

图 3. 获取处理器特性可以知道可用线程的最大数目

用户必须注意,LabVIEW使用线程的实际数量取决于具体问题的大小、系统资源,和其它因素。除非您指定一个较小的数值,在默认情况下,多核分析和稀疏矩阵VI使用物理内核数量作为线程的最大数。鉴于此,使用Set Threads函数可以设置任意数量的线程,但这一设置必须在并行执行实际代码之前完成。也就是说,程序的流程必须顺序执行,以便更好地控制为执行某一段代码所使用的线程数。我们不建议并行执行多个多核分析和稀疏矩阵库的函数。因此,在管理线程时需要密切观察,以避免出现类似于”超额认购”问题;当试图运行的线程数量超过可用的逻辑内核的数量时,就会出现这种问题。

LabVIEW

 

图 4. 线程管理必须按照一定的顺序进行,以避免并行运行产生的性能问题

这种编程架构可以继续扩展,以包含在其它函数域中的线程,或者为一段给定的代码重新分配线程。下图显示了在一台具有Intel i7 2600 四核 CPU的计算机上,对有不同线程数的矩阵相乘问题进行的性能基准测试。

LabVIEW

 

图 5.在一台具有Intel i7 2600 四核CPU的计算机上为矩阵相乘运算进行计算时间和性能改进的基准测试

此外,对于序列中不同的函数域,可以明确划分线程。例如,在一个四核系统中,有两个线程,一个可以分配给转置函数,另一个可以分配给除了转置函数以外的所有的其它函数。

图6.线程可以定义在不同的函数域中

3. 稀疏矩阵函数

稀疏矩阵是多数元素为零的矩阵,广泛应用于数值分析计算。与此相反,如果矩阵的大部分的元素不为零,那么通常称为密集矩阵。稀疏矩阵为存储数据提供了一个更有效的方法,并且在分析程序中可以使用特定的计算技术以更少的时间完成运算。例如,下面的图表显示了对于一个AxB函数,使用密集矩阵和稀疏矩阵的比较,其中稀疏矩阵的密度为0.01。

LabVIEW

 

图7.稀疏矩阵降低了对内存需求,而降低的程度取决于非零项的分布和数量。

多核分析和稀疏矩阵工具包提供了广泛的矩阵VI来操控一个稀疏矩阵的元素、对角线和子矩阵。用户可以使用这些函数解决具有挑战性的问题,包括曾经由于矩阵过大而不能有效存储和处理的问题。

LabVIEW

 

图8.矩阵函数选板包含一系列VI以操控稀疏矩阵。

矩阵VI使用一个稀疏矩阵对象来定义这种矩阵。该工具包包括全面的函数可以转换为稀疏矩阵,或者进行相反的操作。

LabVIEW

 

图9.在LabVIEW中,稀疏矩阵通过一个对象来表示

4. 数据类型支持

多核分析和稀疏矩阵工具包内的函数支持单精度和双精度浮点数据类型。因此,要求低精度的运算可以使用较少的内存、以及更少的时间。关于函数性能的更多信息,请参阅下表。

LabVIEW

 

表1.多核分析和稀疏矩阵工具包支持的数据类型

当提升计算性能和节省内存很重要时,并且运算不会溢出单精度浮点数值的范围时,可以使用单精度数据类型。下面的图表显示了使用单精度和双精度数据类型的矩阵相乘函数和FFT函数的性能基准测试。

LabVIEW

 

图8.对于AxB 和 FFT函数,单精度运算可以达到双精度运算速度的2倍

性能方面的考虑

E尽管NI LabVIEW已经实现了在多核目标中有效地管理线程,许多其它的应用程序也能够从本文所述的多线程函数中受益。虽然应用程序的性能提升程度主要取决于代码的具体情况,但是一些初始基准测试以及客户的反馈表明个别函数能够达到4-7倍的速度提升。当处理大型数据集时,这些改进会进一步地增加。

本部分介绍了使用多核分析和稀疏矩阵工具包对于不同数据类型的矩阵和FFT运算的基准测试结果。这些分析是在两个不同的目标上以LabVIEW 高级分析库VI进行的。一个是在四核 i7 @ 3.4GHz, 8GB RAM Windows 7 64bit CPU进行;另一个是在Core 2 Duo T7400 @ 2.16GHz, 512MB RAM LabVIEW Real-Time 2012 SMP NI PXI-8106 控制器上进行。

LabVIEW

 

表2.在一个四核i7 64 bit CPU上,使用4个线程和多核分析和稀疏矩阵工具包VI,对比LabVIEW高级分析库的性能基准测试结果。

 

LabVIEW

 

表3.在一个Core 2 Duo RT NI PXI-8106 控制器上,使用4个线程和多核分析和稀疏矩阵工具包VI,对比LabVIEW高级分析库的性能基准测试结果。

5. 结论

NI LabVIEW多核分析和稀疏矩阵工具包提供了高性能的LabVIEW多线程分析库,它适用于需要处理大型数据集、并且可以在Windows和LabVIEW Real-Time (ETS)上执行的应用。该工具包为多核编程人员提供了更广泛的工具来有效地管理执行在多个内核以及在不同函数域中的线程。此外,一套完整的多线程函数还包括稀疏矩阵的相关操作运算。虽然这些分析函数能够更好地利用多线程,但是用户必须特别注意创建过多线程所带来的不利影响。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分