实战Matlab之并行程序设计_刘维

5星(超过95%的资源)
所需积分/C币:50 2016-06-19 09:56:08 17.29MB PDF
35
收藏 收藏
举报

《实战Matlab之并行程序设计》通过阅读和学习,读者可以掌握基于多种平台(多核、多处理器、集群和GPU等),利用多项技术(Matlab并行计算工具箱、多线程MEX文件、OpenMP和GPU等),学习理解Matlab并行程序设计的原理、方法和技巧。《实战Matlab之并行程序设计》共分l0章:第1章为Matlab开发环境和程序设计基础;第2章为利用parfor对for循环进行并行;第3章为SPMD并行结构;第4章为其他Matlab并行结构;第5章为Matlab并行计算数据类型;第6章为Matlab通用并行程序设计;第7章为MDCE配置;第8章为创建多线程MEX文件;第9章为在Matlab中应用OpenMP进行并行计算;第10章为利用GPU并行执行Matlab程序。书中附录共包括三个部分,即MEX文件基础知识、用户配置项和Matlab并行计算常用概念说明。书中所有的源代码均可在出版社网站的下载中心和Matlab中文论坛中下载。除特别说明之外,其开发和编译环境均为Matlab2010与Visual C2010。
实战 Matlab之 并行程序设计 刘维编著 让京轨航无答出版融 前言 随着多核和集群技术的快速发展,并行程序设计成为提高数值计算效率的主 流技术之一。目前,常展的小型并行计算平台可大致分为两类:一类是由多核和 多处理器构建的单计算机平台;另一类是由多个计算机构成的集群( Cluster)系 统。单个计算机上的多核或多CPU之间可以通过共享内存进行数据交互;多个 计算机构成的集群通过网络进行数据通信。常用的并行计算技术包括多线程技 术、基于共享内存的 OpenMP技术、基于集群系统的MPI技术等。但无论是基于 多线程的并行计算技术,还是基于 OpenMP的并行计算技术,以及基于MPI的并 行计算技术,都需要用户处理大量的与并行算法无关的技术细节。此外,这些并 行计算技术本身并不提供高效的算法库,与数值计算的关联是松散的。 Matlab已经成为数值计算领域的主流工具,它提供了大量高效的数值计算模 块和丰富的数据显示模式,便于用户进行快速算法研究和科学建模仿真。因此, 如果 Matlab支持多核、多处理器和集群并行计算的话,那么对于科学研究人员和 工程师来说,无疑是一个新的福音。在 Matlab2009之后, Matlab推出了并行计 算工具箱( Parallel Computing Toolbox,PCT)和并行计算服务( Distributed com puting Server,DCS),通过PCT和DCS用户可以实现基于多核平台、多处理器平 台和集群平台的多种并行计算任务。利用PCT和DCS,用户无需关心多核、多处 理器以及集群之间的底层数据通信,而是更多地将主要精力专注于并行算法的设 计;同时可以充分利用 Matlab提供的数值计算模块和数据显示功能,高效便捷地 完成并行计算任务。 PCT除了支持通用处理器构建的多核、多处理器和集群平台之外,还增加了 对GPU( Graphics Processing Unit的支持。GPU最早主要应用在图形计算领 域,近年来GPU在通用计算领域的发展迅速。在 Matlab中,可以通过PCT、 MEX文件等多种方式利用GPU完成数据处理功能。 在Maab中,并行程序开发与普通程序开发的差别很大,因此在开始应用 Matlab并行计算功能之前,读者首先需要考虑以下几个问题。 实战 Matlab之并行程序设计 1)并行计算的平台 平台是并行计算的载体,也是并行计算技术选择的最主要的依据。如果读者 只有一个单核单处理器的计算机,那么最终用 Matlab并行计算很难带来任何计 算效率上的提高。如果读者拥有一台多核或多处理器的计算机,那么采用 Matlab 并行计算工具箱就可以满足一般的并行计算要求( Matlab2010b的并行计算工具 箱最多可支持8个 worker,或者说可利用8个核的计算能力)。如果读者拥有多 台计算机组成的集群,则需要利用PCT和DCS共同完成并行计算任务。如果读 者拥有GPU处理器,则可以利用PCT、MEX文件等技术通过用GPU完成并行 计算任务。 (2)并行计算的复杂程度 Matlab并行计算工具箱为常用的并行计算问题提供了相对快捷和简单的解 决方案。比如,利用 parfor可以对for循环进行并行处理,利用SPMD可以对单 个程序多组数据的情况进行并行处理,因此读者在分析待解决的并行计算问题 时,应重点考虑待解决并行计算问题的复杂程度。如果并行计算问题可以直接采 用 parfor或SPMD进行处理(或者可以分解为类似的问题),则应尽量选择Mat lab并行计算工具箱内置的并行结构,这样可以大大提高用户解决问题的效率。 如果面临的并行计算问题比较复杂,则可以采用更为通用的解决方案(比如创建 parallel job或 distributed job),甚至可以创建mex文件采用多线程和 OpenMP并 行技术。 (3)并行计算的数据通信问题 并行计算的目的主要有两个,一是提高计算效率,二是提高计算机的利用率 提高计算效率比较容易理解,某个问题如果采用单个CPU计算需要10小时,那 么采用10个CPU进行计算可能只需要1.5小时就可以完成。在有些情况下,即 使单个¢PU的计算效率可以满足需求,但是如果图形界面和计算模块放在一个 CPU上执行,将会对图形界面的操作性产生影响,从而影响用户使用软件的体验。 此时,如果配置双CPU或多核的计算机,可以釆用一个CPU或处理器核(下文统 称处理单元)完成计算,另外一个处理单元完成图形界面显示或用户响应。这只 是利用并行计算提高计算机利用率的一个例子。在实际应用中,并行计算不是总 能带来令人满意的效果。在极端情况下,并行计算的效率反而会低于单处理单元 的计算效率。因为并行计算本身也需要占用系统资源。在目前的处理体系中,多 前言 线程或多进程是并行计算的基础。虽然 Matlab并行计算工具箱已经隐藏了多线 程或多进程操作,用户在程序设计的层面不用关心线程或进程操作,但是用户不 能忽略并行计算带来的系统资源消耗。并行计算占用系统资源主要体现在两个 方面:-是准备并行计算的必要操作,比如创建线程、创建进程、创建任务、并行计 算启动前准备数据等;二是并行计算过程中各个并行任务之间的数据通信。并行 计算运行之前准备引入的系统开销是一次性的,相对容易估算,但并行任务之间 的数据通信需要引起特别的重视。在设计并行计算方案的时候,应尽量做到各并 行任务之间的数据通信量最小化。特别是在网络速度较慢的集群计算平台上,任 务之间的数据通信问题往往是提高并行效率的主要瓶颈 上述三个问题也是本书重点讲解的三个问题。在并行计算平台方面,本书重 点介绍了基于多核、多处理器、集群系统和GPU平台 Matlab并行计算程序的开 发方法。根据并行计算的复杂度方面,本书由简入难,从 Matlab基本的并行结构 逐步深入到 Matlab并行计算数据类型, Matlab通用并行程序设计, Matlab中应 用多线程技术、 Matlab中应用 OpenMP基础和 Matlab中应用GPU并行处理技 术等方面的内容。考虑到不同的计算平台和不同的并行计算技术涉及的数据通 信问题差异较大,因而将数据通信问题的讲解和说明分散到各章节中进行说明 本书对基于 Matlab的并行计算程序设计的原理进行了深入的剖析,对基于 Matlab的并行计算程序设计方法和技巧给出了详细的说明,并在各章节给出了大 量实例。通过阅读和学习本书的内容,读者可以掌握基于多种平台(多核、多处理 器、集群和GPU等),利用多项技术( Matlab并行计算工具箱、多线程MEX文件 OpenMP和GPU等),完成 Matlab并行程序设计的原理、方法和技巧。全书共分 10章,其中:第1章为 Matlab开发环境和程序设计基础;第2章为利用 parfor对 for循环进行并行;第3章为SPMD并行结构;第4章为其他 Matlab并行结构;第 5章为 Matlab并行计算数据类型;第6章为 Matlab通用并行程序设计;第7章为 MDCE配置;第8章为创建多线程MEX文件;第9章为在 Matlab中应用 OpenMP进行并行计算;第10章为利用GPU并行执行 Matlab程序。附录共包 括三个部分,其中:附录A为MEX文件基础知识;附录B为 Matlab并行计算配 置项;附录C为 Matlab并行计算常用概念说明 本书的阅读对象包括大中专院校学生以及利用 Matlab开发并行程序的科学 家和工程师。书中对 Matlab并行计算相关基础知识均进行了说明,因此读者可 4 实战 Matlab之并行程序设计 以循序渐进地完成本书的阅读和学习。如果读者熟悉 Matlab语言和C/C++语 言,将有助于理解和掌握本书的内容。 本书是较早对 Matlab并行计算进行系统介绍的图书之一,书稿和书中实例 虽经作者仔细斟酌和详细测试,但仍不免有错误或不足之处。如果读者阅读过程 发现书中文宇或内容存在不尽如人意之处,还望不吝指出。针对本书,北京航空 航天大学出版社和Matlab中文论坛(http://www.ilovematlab,cn/)特别提供了 读者与作者在线交流的平台(http://www.ilovematlab.cn/forum-212-1.ht- ml),我希望借助这个平台实现与广大读者面对面的交流,解决大家在阅读此书的 过程中遇到的问题,分享彼此的学习经验,从而达到共同进步。 刘维 2011年10月5日夜 第1章 Matlab开发环境和程序设计基础 1.1本章导读… ···非 1.2 Matlab环境 鲁。·鲁鲁鲁自血申自着普看 1.2.1命令行窗口 1.2.2代码编辑器 自●着 鲁 口·●萨 1.2.3工作空间窗口……… 11123557 1.2.4历史命令窗口 1.2.5利用 Matlab环境的界面操作……… 着非自盘自毒鲁·非D曹省自■中·非。鲁曲自·世曲。自自。·非 1.2.6 Matlab帮助……… 1.2.7代码输入提示… 酯●单·命唱·看看。看 1.3 Matlab语言基础 香■●·自 10 1.3.1 Matlab脚本文件…… 10 1.3.2 Matlab运算符与表达式 ……………………………………………11 1.3.3 Matlab函数…………………… 1.3.4 Matlab的向量运算… ………………………16 1.3.5 Matlab的程序控制 19 1.3.6面向对象程序设计… 即·番非奇··音.参。口●·即·自。自鲁。·即·自息。·非。自番鲁春··息,。。 23 4 Matlab常用的数据类型 27 1.4.1数值阵列… 28 1.4.2字符阵列…………………………………………………… 30 1.4.3逻辑阵列… 31 1.4.4元组阵列…… 32 1.4.5结构体阵列…………………………………………………………………………34 1.4.6函数句柄阵列… 36 1.5 Matlab常用数据显示函数 38 1.5.1 figure窗口 38 1.5.2绘制曲线 1.5.3显示图像数据…… 40 .5.4显示三维曲面数据… 咖。。自自。·也自。.D.曲鲁。● 40 第2章利用 parfor对for循环进行并行 43 2.1本章导读… 43 2.2循环和并行 p幽虚 …………43 2 实战 Matlab之并行程序设计 2.3for循环的并行性 …………43 2.4 parfor关键字… 看·鲁鲁音自8自 ·鲁鲁鲁鲁鲁自自·鲁自·自。●看。d·自●量·D。B● 44 2.5 Matlab client H worker 44 2.6利用 parfor并行for循环的基本原理…… 44 2.7利用 parfor并行for循环的基本步骤 45 2.8配置 Matlab并行计算池 …………45 2.8.1 matlabpool命令……………… 鲁着·自‘,自鲁·····4■普自b一自●·普·自● 45 2.8.2 matlabpool配置… 47 2.9第一个 parfor程序及其与for循环的对比 48 2.10 parfor循环比for循环快多少?……… 50 2.10.1不启动 matlabpool,直接执行 parfor程序……………………51 2.10.2打开 matlabpool…… 章眼·鲁自●。。备 51 2.11 parfor和for的不同 52 2.12数据通信的影响… ……53 2.12.1数据通信较大的情况 53 2.12.2 parfor和for的执行时间曲线 …55 2.12.3数据通信影响较小的情况 57 2.13函数句柄在 parfor并行程序分析中的应用 60 2.14简约操作 ··自·■自·●●看。非自·看自自。身鲁··自·。 61 2.14.1简约操作的基本概念及并行原理 61 2.14.2简约操作并行效率分析………………………………………………………62 2.14.3简约操作的执行顺序… …66 2.14.4筒约操作与简约变量的特征 ………………………………66 2.15 parfor循环中的主要变量类型 鲁鲁●q着音4息·量省也章●毫1鲁鲁铅·音音鲁 2.15.1 parfor循环变量概述 2.15.2循环变量……… ··非日。自非自t·自自。●自命t非自自·。。··曾·自。自··。·自着·。·,·D自。自 2.15.3分段变量… 2.15.4广播变量……… …78 2.15.5临时变量… 鲁单·鲁着鲁■非D.非··自·非·着鲁着着普音自 2.16 parfor程序设计需要考虑的其他问题 81 2.16.1变量名称(函数优先)…… ··,·鲁自自非日D息·音。···自·自香··音非。自鲁·自日。自非自 81 2.16.2显式使用变量… 82 2.16.3 parfor中使用函数句柄 着·鲁申要 82 2.16.4在 parfor中调用递归函数 83 2. 16.5 parfor 性能考虑… 着自非·自·鲁自p自鲁 84 2.16.6 Matlab并行计算池中 worker的位置 …………………………85 第3章SPMD并行结构 87 3.1本章导读 87 冒录 3.2 SPMD ……87 33SPMD的使用方法……… ●音鲁香鲁鲁●举●着··鲁。非音鲁看··自身看 88 3.4 Matlab client与 Matlab lab数据交互 90 3.5 distributed或 codistributed数值阵列…………… ···申卓自·看··看自 93 3.5.1采用 distributed对象刨建分布式阵列……… ·D曹 94 3.5.2采用 codistributed对象创建分布式阵列 …………97 3.6在SPMD中获取job、task、lab、 scheduler信息 3.7利用SPMD并行结构解决计算密集型问题 3.8剎用SPMD并行结构解决数据密集型问题 曾·鲁鲁··.自带·自鲁看单 102 第4章其他 Matlab并行结构…… ……………105 4.1本章导读 ●◆·面, 聊鲁qD非;··音自即咖普自鲁鲁 105 4.2 for-drange 105 4,2.1 for-drange应用于分布式阵列…………………………105 4.2.2 for-drange应用于非分布式阵列…… 107 4.3利用 pmode并行执行 Matlab程序……………………………………108 4.3.1启动 pmode窗口 ··鲁●带音鲁音看·自·鲁,·鲁。··。 ………108 4.3.2 pmode窗口界面 …………109 4.3.3显示 pmode数据… 鲁·血◆ ···音·音鲁。音咖自鲁看●··自鲁··鲁。。 ………110 4.3.4在集群中启动 pmode窗 110 4.3.5通过 pmode命令在各个1ab和 Matlab client之间传输数据…… 111 4.4并行执行 Matlab函数 ●鲁·。·看● 113 4.4.1同步模式… …………………………………113 4.4.2异步模式… 鲁●鲁◆啬●品 鲁· 117 第5章 Matlab并行计算数据类型 18 5.1本章导读…… ………118 5.2 Matlab并行计算数据类型…… …118 5.2.1同体变量………………………… …………………119 5.2.2异体变量 119 5.2.3独有变量………………………………………………………120 5.2.4分布式变量 121 5.3并行计算数据类型的转换方法 122 5.3.1将同体变量转换为其他变量 123 5.3.2将异体变量转换为其他变量………… 124 5.3.3将独有变量转换为其他变量 124 5.3.4将分布式变量转换为其他变量 ……………………………………126 54 Matlab并行计算数据类型的应用…… ··鲁自·。 ………………………127 5.4.1 parallel job中应用并行计算数据类型 127

...展开详情
试读 127P 实战Matlab之并行程序设计_刘维
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
嘿糖玛奇朶 不错,是完整版本,之前在另一个网站上下载的都不完整
2016-11-15
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
实战Matlab之并行程序设计_刘维 50积分/C币 立即下载
1/127
实战Matlab之并行程序设计_刘维第1页
实战Matlab之并行程序设计_刘维第2页
实战Matlab之并行程序设计_刘维第3页
实战Matlab之并行程序设计_刘维第4页
实战Matlab之并行程序设计_刘维第5页
实战Matlab之并行程序设计_刘维第6页
实战Matlab之并行程序设计_刘维第7页
实战Matlab之并行程序设计_刘维第8页
实战Matlab之并行程序设计_刘维第9页
实战Matlab之并行程序设计_刘维第10页
实战Matlab之并行程序设计_刘维第11页
实战Matlab之并行程序设计_刘维第12页
实战Matlab之并行程序设计_刘维第13页
实战Matlab之并行程序设计_刘维第14页
实战Matlab之并行程序设计_刘维第15页
实战Matlab之并行程序设计_刘维第16页
实战Matlab之并行程序设计_刘维第17页
实战Matlab之并行程序设计_刘维第18页
实战Matlab之并行程序设计_刘维第19页
实战Matlab之并行程序设计_刘维第20页

试读结束, 可继续阅读

50积分/C币 立即下载