基于GPU加速MATLAB程序的研究
基于GPU加速MATLAB程序的研究[20200406105212]
摘 要
本文阐述了MATLAB软件的发展状况,以及GPU的发展趋势及加速应用。并阐明了GPU加速在科学计算研究中的重要作用。研究了CPU和GPU在子空间和没有子空间中不同维度矩阵的计算时间,并对此进行了记录和分析。近几年来,通用图形单元在结构体系、编程模型各个层面发展迅速,可编程性也与往日相比不断增强和改进。在通用计算中,GPU 越来越多地被加入,尤其是在科学程序的加速计算中。对于计算大规模的稀疏线性系统,Krylov子空间是当下比较高效的计算形式,对存储容量的需求较小、收敛比较快速等这些都是此方法的优势。通过利用 GPU在子空间上加速计算的这些优势去求解大型稀疏线性系统,缩小计算周期,提升计算速度,并且对解决多种实际问题有非常重要的参考和利用价值。本次主要研究了以下方面并取得了一些研究成果:
1、 研究了CPU和GPU加速计算与矩阵维度的关系,发现了GPU在计算上的优势和劣势,找到了GPU加速计算的适用点。
2、 对有子空间和没有子空间进行了比较,找到了加入子空间后计算的优势,并对此进行了说明。
3、 对power method和lanczos两种算法进行了比较,用加速比CPU/GPU来反映两者的优势和劣势。
*查看完整论文请 +Q: 3 5 1 9 1 6 0 7 2
关键字:GPUMATLAB子空间加速计算
目 录
基于GPU加速MATLAB程序的研究 I
摘 要 I
Abstract II
第一章 引 言 1
1.1 MATLAB、JACKET的发展介绍 1
1.2 GPU的发展 4
第二章 自旋系统及加速算法 5
2.1 自旋系统的介绍 5
2.1.1哈密顿量 5
2.2 矩阵对角化算法介绍 7
2.2.1 eigs算法 7
2.2.2 power method算法 8
2.2.3 Lanczos算法 9
第三章 加速情况比较 11
3.1 CPU、GPU主要参数介绍 11
3.2 无子空间的加速比较 14
3.3 在子空间中的加速比较 16
第四章 展 望 19
参考文献 20
致 谢 22
第一章 引 言
如今,通过稀疏线性方程组求解的子空间迭代法算法[1]已经成为不少应用性实际问题的主要算法,这亦是如今对稀疏线性方程组求解的最普遍、最高效的方式。子空间算法的应用领域相当广泛,在对高维微分方程的数值解计算问题上,对核物理与流体力学的计算上以及对结构与非结构问题的有限元的分析问题等浩繁的领域上都会有所牵涉。这些规模巨大的科学工程的计算和数据处理都需要借助此计算方式来完成。
近来涌现的混合计算系统[2]为计算稀疏线性体系带来了新的时机和目标,需要我们去钻研与新型的硬件相适合的GPU的运行特性。
1.1 MATLAB、JACKET的发展介绍
American MATHWORKS Company发布的MATLAB软件是一个主要用来做科学计算和图形规划的运算体系。MATRIX?LABORATORY(矩阵实验室)[3]就被称为MATLAB。我们目前所用的版本汇集了通常数学处理所要用到的各种功能。具备高效的数据统计、矩阵计算和图形绘制等实用多样的功能。用户在MATLAB的资源下,能够同时安排程序设计、数值运算、输入输出、图表生成、文献处理等各种功能,这些都能够被集成地实现。MATLAB能够营造出一个人与计算机相互交流的数学环境,矩阵是该系统的基础数据结构。在矩阵对象计算时,没有必要对维数做出精准的定义。使用MATLAB来设计比拟C语言或FORTRAN语言作数据运算的程序相比较节约出了许多编译时间。在国外大学的教学中,MATLAB正在成为一个高效的工具来帮助教授课程。这主要是面对数值线性代数和其余操作性的上等数学学科。在技术工程里,少许现实课题和数学模型也能够用MATLAB来处理。如数据计算、算法的预编辑与证明等都是表率性的应用。还有某些在特殊的矩阵计算中的应用,像自动化控制、数字信号处理等。克里夫摩尔是MATLAB系统起初的设计者,开发所用的语言为FORTRAN语言。而LINPACK和EISPACK做的课题实验结果成为了矩阵的算法的来源。MATHWORKS公司发布了如今我们所用的MATLAB程序,开发所用的语言主要是C语言。首版的编译源程序的开发由史提夫班格特主持,图形功能模块的设计由史提夫克莱曼负责,各种数学分析的子模块主要通过约翰利特和克里夫摩尔的工作来解决,并且他们负责编写了客户的使用说明以及绝大部分的M文件。自从初版发布到现在,许许多多科技设计者加入到了MATLAB的建设行列里,也成为了如今MATLAB系统革新的巨大进献。自从MATLAB通过商品形式发布后,仅在很短的数年时间里,就凭借优良的公开性和运行的稳定性,让本来操作控制行业里的封闭式软件都逐渐退出客户需求,然后通过MATLAB平台重新设计。到了二十世纪九十年代,能够得到国际公认的标准科学计算软件的,非MATLAB莫属。在90年代早期,其对数据运算和分析能力已经是世界上30多个数学类的科学应用软件中的佼佼者。在2001年,MATHWORKS公司发行了MATLAB6.0,这一版本不仅保留了其原本的数据计算和图形可视功能,而且做出了以下几个巨大的改变:
(1)此版通过重新设计改进与外部设备直接安排数据交流的部件,使得MATLAB能够进行及时的数学计算、运行,并对硬件的研发途径进行了完善。
(2)增加了SIMULINK。这是一个能够实现人机交流互动的动态体系集成环境。它可以实现建模、仿真、分析等一系列功能。它的发布改变了人们的思考方式,使得人们开始思考很多从前必须要简化假设的非线性要素、随机要素,由此人们对非线性、随机动态体系的认知能力获得了极大的增强。
(3)增加了符号计算功能。一九九三年,滑铁卢大学把“Maple”的拥有权转售给了MATHWORKS,MATHWORKS凭借“Maple”研究发布了“数学符号工具箱1.0”。MATHWORKS的这一行动加速了国际上对于数据计算、图符计算哪个更有优势这一长时间争论的终止。由此开创了这两种计算方式互补发展的新纪元。
(4)设计建造了Notebook。MATHWORKS公司把改进目标定位在被广泛运用的微软公司的文字编辑处理软件Word,从而完成了与文字处理软件的完美对接,这也为专业科技工作者创造了一个一体化的高水平工作设计环境。这个统一的整体能够同时达成科学估算、可视化图表、文本处理功能。
?这个系统主要由4个部分构成,一下我们对其分别进行介绍。
(1)MATALB的编程语言系统。MATLAB有调用函数、条件控制、数据构造等程序设计的特性。通过这些特性不仅能够实现小规模的编译,进行算法设计等基本任务,而且能够完成大规模的程序编写,开发设计繁杂的程序。
(2)MATLAB的运行环境。这一部分是管理工作空间中的各种功能。主要包含变量传输的方式方法,还有开发、调试、处理M文件。
(3)图形矩相系统。这一模块包含2D、3D的数据图示、图表处理、动态产生、图表显示等功能,是MATLAB图表体系的根基,也是MATLAB的高级指令。还有进行性能掌控的低级指令,这一层指令涵盖了使用者开发GUI应用程序的各类工具。
(4)MATLAB应用程序接头。这是MATLAB为客户提供的一个可以在MATLAB体系中运用的C语言和FORTRAN语言的函数库,也涵盖MAT文件的读写功能,由此能够体现MATLAB超级强大的功能。用户能够按照自己的任务安排,规划自己的工具箱。
Jacket是由ACCELER EYES研究开发的MATLAB专用算法。主要由GPU 的计算引擎参与计算并且涵盖了高层的接口。这一变革彻底地解决了复杂的底层硬件,并且对所有CUDA都支持,这也使得进行CUDA 开发的门槛降低了许多。Jacket本身就拥有一个基本函数库,专门为在MATLAB中运行时能够调用,从而实现优化并行计算的功能。并能够通过将所有保存于MATLAB CPU 内存中的变量数据转换为GPU上的数据类型来支持MATLAB的数据类型。所以对于以前的MATLAB程序,只要变换一下数据的类型,就可以放到GPU上工作。
Jacket把MATLAB用户界面改成了透明的,由此能够以一种交互式的MATLAB界面和命令窗口使用MATLAB编辑器和调试器,就这样开始GPU工作的运行。在MATLAB的运行空间上,全部的Jacket数据和任何其他MATLAB的矩阵都是可见的。在中央处理器中的所有存储变量,在转化为保存在Jacket中的图形处理器中的数据类型后将自动的在后台运行,并通过图形处理器的数据调用来完成动态的编译。这在GPU上不需要其他附加的编程。
摘 要
本文阐述了MATLAB软件的发展状况,以及GPU的发展趋势及加速应用。并阐明了GPU加速在科学计算研究中的重要作用。研究了CPU和GPU在子空间和没有子空间中不同维度矩阵的计算时间,并对此进行了记录和分析。近几年来,通用图形单元在结构体系、编程模型各个层面发展迅速,可编程性也与往日相比不断增强和改进。在通用计算中,GPU 越来越多地被加入,尤其是在科学程序的加速计算中。对于计算大规模的稀疏线性系统,Krylov子空间是当下比较高效的计算形式,对存储容量的需求较小、收敛比较快速等这些都是此方法的优势。通过利用 GPU在子空间上加速计算的这些优势去求解大型稀疏线性系统,缩小计算周期,提升计算速度,并且对解决多种实际问题有非常重要的参考和利用价值。本次主要研究了以下方面并取得了一些研究成果:
1、 研究了CPU和GPU加速计算与矩阵维度的关系,发现了GPU在计算上的优势和劣势,找到了GPU加速计算的适用点。
2、 对有子空间和没有子空间进行了比较,找到了加入子空间后计算的优势,并对此进行了说明。
3、 对power method和lanczos两种算法进行了比较,用加速比CPU/GPU来反映两者的优势和劣势。
*查看完整论文请 +Q: 3 5 1 9 1 6 0 7 2
关键字:GPUMATLAB子空间加速计算
目 录
基于GPU加速MATLAB程序的研究 I
摘 要 I
Abstract II
第一章 引 言 1
1.1 MATLAB、JACKET的发展介绍 1
1.2 GPU的发展 4
第二章 自旋系统及加速算法 5
2.1 自旋系统的介绍 5
2.1.1哈密顿量 5
2.2 矩阵对角化算法介绍 7
2.2.1 eigs算法 7
2.2.2 power method算法 8
2.2.3 Lanczos算法 9
第三章 加速情况比较 11
3.1 CPU、GPU主要参数介绍 11
3.2 无子空间的加速比较 14
3.3 在子空间中的加速比较 16
第四章 展 望 19
参考文献 20
致 谢 22
第一章 引 言
如今,通过稀疏线性方程组求解的子空间迭代法算法[1]已经成为不少应用性实际问题的主要算法,这亦是如今对稀疏线性方程组求解的最普遍、最高效的方式。子空间算法的应用领域相当广泛,在对高维微分方程的数值解计算问题上,对核物理与流体力学的计算上以及对结构与非结构问题的有限元的分析问题等浩繁的领域上都会有所牵涉。这些规模巨大的科学工程的计算和数据处理都需要借助此计算方式来完成。
近来涌现的混合计算系统[2]为计算稀疏线性体系带来了新的时机和目标,需要我们去钻研与新型的硬件相适合的GPU的运行特性。
1.1 MATLAB、JACKET的发展介绍
American MATHWORKS Company发布的MATLAB软件是一个主要用来做科学计算和图形规划的运算体系。MATRIX?LABORATORY(矩阵实验室)[3]就被称为MATLAB。我们目前所用的版本汇集了通常数学处理所要用到的各种功能。具备高效的数据统计、矩阵计算和图形绘制等实用多样的功能。用户在MATLAB的资源下,能够同时安排程序设计、数值运算、输入输出、图表生成、文献处理等各种功能,这些都能够被集成地实现。MATLAB能够营造出一个人与计算机相互交流的数学环境,矩阵是该系统的基础数据结构。在矩阵对象计算时,没有必要对维数做出精准的定义。使用MATLAB来设计比拟C语言或FORTRAN语言作数据运算的程序相比较节约出了许多编译时间。在国外大学的教学中,MATLAB正在成为一个高效的工具来帮助教授课程。这主要是面对数值线性代数和其余操作性的上等数学学科。在技术工程里,少许现实课题和数学模型也能够用MATLAB来处理。如数据计算、算法的预编辑与证明等都是表率性的应用。还有某些在特殊的矩阵计算中的应用,像自动化控制、数字信号处理等。克里夫摩尔是MATLAB系统起初的设计者,开发所用的语言为FORTRAN语言。而LINPACK和EISPACK做的课题实验结果成为了矩阵的算法的来源。MATHWORKS公司发布了如今我们所用的MATLAB程序,开发所用的语言主要是C语言。首版的编译源程序的开发由史提夫班格特主持,图形功能模块的设计由史提夫克莱曼负责,各种数学分析的子模块主要通过约翰利特和克里夫摩尔的工作来解决,并且他们负责编写了客户的使用说明以及绝大部分的M文件。自从初版发布到现在,许许多多科技设计者加入到了MATLAB的建设行列里,也成为了如今MATLAB系统革新的巨大进献。自从MATLAB通过商品形式发布后,仅在很短的数年时间里,就凭借优良的公开性和运行的稳定性,让本来操作控制行业里的封闭式软件都逐渐退出客户需求,然后通过MATLAB平台重新设计。到了二十世纪九十年代,能够得到国际公认的标准科学计算软件的,非MATLAB莫属。在90年代早期,其对数据运算和分析能力已经是世界上30多个数学类的科学应用软件中的佼佼者。在2001年,MATHWORKS公司发行了MATLAB6.0,这一版本不仅保留了其原本的数据计算和图形可视功能,而且做出了以下几个巨大的改变:
(1)此版通过重新设计改进与外部设备直接安排数据交流的部件,使得MATLAB能够进行及时的数学计算、运行,并对硬件的研发途径进行了完善。
(2)增加了SIMULINK。这是一个能够实现人机交流互动的动态体系集成环境。它可以实现建模、仿真、分析等一系列功能。它的发布改变了人们的思考方式,使得人们开始思考很多从前必须要简化假设的非线性要素、随机要素,由此人们对非线性、随机动态体系的认知能力获得了极大的增强。
(3)增加了符号计算功能。一九九三年,滑铁卢大学把“Maple”的拥有权转售给了MATHWORKS,MATHWORKS凭借“Maple”研究发布了“数学符号工具箱1.0”。MATHWORKS的这一行动加速了国际上对于数据计算、图符计算哪个更有优势这一长时间争论的终止。由此开创了这两种计算方式互补发展的新纪元。
(4)设计建造了Notebook。MATHWORKS公司把改进目标定位在被广泛运用的微软公司的文字编辑处理软件Word,从而完成了与文字处理软件的完美对接,这也为专业科技工作者创造了一个一体化的高水平工作设计环境。这个统一的整体能够同时达成科学估算、可视化图表、文本处理功能。
?这个系统主要由4个部分构成,一下我们对其分别进行介绍。
(1)MATALB的编程语言系统。MATLAB有调用函数、条件控制、数据构造等程序设计的特性。通过这些特性不仅能够实现小规模的编译,进行算法设计等基本任务,而且能够完成大规模的程序编写,开发设计繁杂的程序。
(2)MATLAB的运行环境。这一部分是管理工作空间中的各种功能。主要包含变量传输的方式方法,还有开发、调试、处理M文件。
(3)图形矩相系统。这一模块包含2D、3D的数据图示、图表处理、动态产生、图表显示等功能,是MATLAB图表体系的根基,也是MATLAB的高级指令。还有进行性能掌控的低级指令,这一层指令涵盖了使用者开发GUI应用程序的各类工具。
(4)MATLAB应用程序接头。这是MATLAB为客户提供的一个可以在MATLAB体系中运用的C语言和FORTRAN语言的函数库,也涵盖MAT文件的读写功能,由此能够体现MATLAB超级强大的功能。用户能够按照自己的任务安排,规划自己的工具箱。
Jacket是由ACCELER EYES研究开发的MATLAB专用算法。主要由GPU 的计算引擎参与计算并且涵盖了高层的接口。这一变革彻底地解决了复杂的底层硬件,并且对所有CUDA都支持,这也使得进行CUDA 开发的门槛降低了许多。Jacket本身就拥有一个基本函数库,专门为在MATLAB中运行时能够调用,从而实现优化并行计算的功能。并能够通过将所有保存于MATLAB CPU 内存中的变量数据转换为GPU上的数据类型来支持MATLAB的数据类型。所以对于以前的MATLAB程序,只要变换一下数据的类型,就可以放到GPU上工作。
Jacket把MATLAB用户界面改成了透明的,由此能够以一种交互式的MATLAB界面和命令窗口使用MATLAB编辑器和调试器,就这样开始GPU工作的运行。在MATLAB的运行空间上,全部的Jacket数据和任何其他MATLAB的矩阵都是可见的。在中央处理器中的所有存储变量,在转化为保存在Jacket中的图形处理器中的数据类型后将自动的在后台运行,并通过图形处理器的数据调用来完成动态的编译。这在GPU上不需要其他附加的编程。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/2313.html