目录Matlab并行工具箱学习.................................................................................................................11.简介...........................................................................................................................................11.1.并行计算.......................................................................................................................11.2.并行计算平台...............................................................................................................11.3.Matlab与并行计算......................................................................................................12.Matlab并行计算初探.............................................................................................................22.1.并行池...........................................................................................................................22.1.1.配置和开启池(parpool)...............................................................................22.1.2.获取当前池(gcp).........................................................................................32.1.3.关闭池(delete).............................................................................................42.2.循环并行parfor............................................................................................................42.2.1.Matlabclient和Matlabworker.......................................................................42.2.2.并行程序中的循环迭代parfor........................................................................42.2.3.利用parfor并行for循环的步奏.....................................................................52.3.批处理(batch)..........................................................................................................52.3.1.运行批处理任务...............................................................................................52.3.2.运行批处理并行循环.......................................................................................62.4.MATLAB的GPU计算...............................................................................................62.4.1.GPU设备查询与选择......................................................................................82.4.2.在GPU上创建阵列.........................................................................................82.4.3.在GPU上运行内置函数.................................................................................92.4.4.在GPU上运行自定义函数...........................................................................103.总结.........................................................................................................................................11参考文献...........................................................................................................................................1高性能计算高性能计算1Matlab并行工具箱学习1.简介高性能计算(HighPerformanceComputing,HPC)是计算机科学的一个分支,研究并行算法和开发相关软件,致力于开发高性能计算机。可见并行计算是高性能计算的不可或缺的重要组成部分。1.1.并行计算并行计算(ParallelComputing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台的独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户[1]。1.2.并行计算平台平台是并行计算的载体,它决定着你可以用或只能用什么样的技术来实现并行计算。多核和集群技术的发展,使得并行程序的设计成为提高数值计算效率的主流技术之一。常用的小型计算平台大致分为:由多核和多处理器构建的单计算机平台;由多个计算机组成的集群(Cluster)。前者通过共享内存进行数据交互,后者通过网络进行数据通信。计算正在从CPU(中央处理)向CPU与GPU(协同处理)的方向发展。GPU最早主要应用在图形计算机领域,近年来,它在通用计算机领域得到了迅猛的发展,使用GPU做并行计算已经变得越来越重要和高效。常用的并行计算技术包括多线程技术、基于共享内存的OpenMP技术,基于集群的MPI技术等。但它们都需要用户处理大量与并行计算算法无关的技术细节,且不提供高效的算法库,与数值计算的关联较为松散。1.3.Matlab与并行计算Matlab即是一款数值计算软件,又是一门语言,它已经成为数值计算领域的主流工具。Matlab提供了大量高效的数值计算模块和丰富的数据显示模式,便于用户进行快速算法的高性能计算2研究和科学建模仿真。自Matlab2009之后,Matlab推出了并行计算工具箱(ParallelComputingToolbox,PCT)和并行计算服务(DistributedComputingServer,DCS),通过PCT和DCS用户可以实现基于多核平台、多处理器平台和集群平台的多种并行计算任务。利用PCT和DCS,用户无需关心多核、多处理器以及集群之间的底层数据通信,而是将主要精力集中于并行算法的设计。此外,PCT还增加了对GPU(GraphicsProcessingUnit)的支持。2.Matlab并行计算初探Matlab并行计算工具箱,使用多核处理器,GPU和计算机集群,解决计算和数据密集型问题。高层次的结构并行for循环,特殊阵列类型和并行数值算法,让你在没有而CUDA或MPI编程基础的条件下并行MATLAB应用程序。您可以使用带有Simulink的工具箱并行运行一个模型的多个仿真。该工具箱,通过在本地workers(MATLAB计算引擎)上执行应用程序,来使用多核台式机的全部处理能力。不用改变代码,就可以在计算机集群或网格计算服务(使用MATLAB分布式计算服务器™)上运行相同的应用程序。可以交互地或批处理地运行并行应用程序。包含以下特性:并行for循环(parfor),可以在多个处理器上运行任务并行算法。支持CUDA的NVIDIAGPU。通过本地workers,充分利用台式机的多核处理器。计算机集群和网格计算支持(通过MATLAB分布式计算服务)。以交互方式和批量方式执行并行应用程序。分布式阵列和SPMD(single-program-multiple-data),用于大型数据集的处理和数据并行算法。本文仅介绍循环的并行,批处理和GPU并行计算。2.1.并行池2.1.1.配置和开启池(parpool)在使用parfor和spmd之前,首先要配置和开启并行计算池。parpool函数1提供并行池的配置和开启功能,其用法如下表2-1:1在较早的版本中,是matlabpool,本人实验平台是Matlab2014a,输入matlabpool,提示在后期版本中会将其移除,并取而代之以parpool,所以本文仅阐述parpool的用法。高性能计算3表2-1parpool函数用法语法和参数功能parpool使用默认集群配置文件启动池,通过并行选项和默认配置文件设定池的大小。parpool(poolsize)启动制定数量的池,如果它们被占用,会等待至可用。parpool(profilename)启动一个由“profilename”指定的集群配置文件的worker池,poolsize用于指定池的数量。parpool(profilename,poolsize)parpool(cluster)在由“cluster”对象指定的集群(cluster)上启动worker池,poolsize用于指定池的数量。parpool(cluster,poolsize)parpool(___)像客户端工作空间(workspace)返回表示集群上的池的parallel.Pool对象。此外,还可以给上述命令指定输出参数,如输入:p=parpool,输出如下图:图2-1输入命令p=parpool时的运行结果输出参数p为并行池对象,一个池对象有7中属性,上图显示了6种属性。其中,“NumWorkers”代表wor