本节将通过Symphony DE与MATLAB集成,展示MATLAB与第三方并行计算工具集成。
通过9.2.1节中的例子可以看出,MATLAB所使用的作业由多个任务构成,调度器的作用就是将作业中的任务分配给执行者执行。用户还可以在选择调度器时,指定哪些计算机可用来进行多机并行计算。
此外MATLABPCT还提供了公共调度接口,可以与第三方并行计算软件的调度器集成。当然,用户需要进行一定的配置才能使第三方软件与PCT协同工作。比如对于执行者,PCT规定了特定的参数来获得所需的设置信息。
一般地,用户需要通过环境变量来传递这些参数,如图9-8所示。
图9-8 通过环境变量传递执行者所需参数
在上面的图中需要注意的是提交方法与解码方法,它们分别工作在客户端与执行者节点上,并成对出现。提交方法的作用是将所需的环境变量以及作业发送给调度器,而解码方法的作用则是得到所需的环境变量并将它们传递给执行者。
(1)PCT与第三方工具集成的工作方式
PCT采用数据集中发布、收集的方式,与并行计算环境中的计算节点传输输入与输出数据。一般采用共享文件系统,在指定的位置存放输入数据,由调度器将文件共享路径告知执行者,再由执行者主动从共享位置获取输入数据进行计算,然后将结果输出到共享文件系统,最终由客户端统一处理输入数据。
在运行过程中,MATLAB不需要像Symphony DE那样编写消息类,而是统一将数据写入文件。调度器除了负责分配任务之外还需要在执行节点上启动MATLAB程序,由MAT-LAB读取输入数据并最终执行。
调度器的作用只是负责管理任务的分配以及执行节点上MATLAB的启动,如图9-9所示。
图9-9 MATLAB与第三方并行计算软件集成工作序列图
(2)通过运行symexec并行执行命令
在Symphony DE中除了可以使用编程接口实现并行运算之外,还可以使用symexec命令来实现并行执行。
输入soamview app命令可以看到有两个应用,一个是用来测试Symphony DE工作状态的symping应用,另一个就是symexec应用,如下所示:
使用命令soamcontrol app enable symexec5.1可开启该应用。
symexec共有五个子命令,分别是:
●create 创建新的命令执行会话。
●send 发送命令并执行。
●fetch 获取命令执行结果。
●close 关闭命令执行会话。
●run 发送命令并等待命令输出结果。
以Windows中的dir命令为例,输出结果如下:
注意,symexec并不会把命令在屏幕上的输出直接返回,如果用户想得到命令输出结果,可以将命令的输出写入到文件中查看。SymphonyDE的默认工作目录为C:\SymphonyDE\DE51\work。
由于可以将命令发送到多个执行节点上运行的特性,symexec很容易与PCT这样的工具集成。在多个执行节点上运行MATLAB进程。
(3)编写客户端代码
当用户需要将一个作业提交给一个调度器时,需将参数设置在调度器的提交方法的属性中。通过调用set方法可以设置属性。例如,执行mysubmitfunc方法时,可以通过如下命令提交给调度器。
sched是客户端中定义的调度对象,它是由findResource方法创建的。SubmitFcn是作业的名称,@mysubmitfunc是需要执行的方法。(www.xing528.com)
PCT中需要设置的文件共享目录以及symexec所需使用的session ID等都可以通过set方法进行设置。
与获得自带的Job Manager调度器类似,针对通用调度器,用户也可以使用findResource方法获得调度器,如下所示:
将客户端代码封装为generic_sheduler_test方法,详细代码如代码清单9-4所示。
【代码清单9-4】
(4)编写MATLAB客户端作业提交方法
在上面的代码中,使用set方法设置了需要提交给调度器调度的方法symdesubmit。
该方法负责具体使用第三方并行计算工具和分配任务。在Symphony DE中,用户可以使用symexec在并行计算环境中启动多个MATLAB进程,通过共享文件系统获取输入数据进行计算,并最终将结果输出到共享文件系统。
工作流程为通过symexec将命令传递给执行节点执行。由于启动MATLAB进程需要设置一些相关的配置参数,用户可以使用symexec的-e选项将参数作为环境变量传递给执行节点。
这里要特别注意,需要通过解码器才能将执行节点上的参数设置为MATLAB所能使用的runprop对象(虽然通过MATLAB数据文件用户不需要解码计算数据,但配置参数仍需要解码)。
symdesubmit的代码如代码清单9-5所示。
【代码清单9-5】
(5)编写执行者解码代码
解码方法将从环境变量中得到的共享文件系统信息封装为runprop对象,如代码清单9-6所示。
【代码清单9-6】
(6)部署m文件
在执行命令之前,用户需要将m文件部署到所有的MATLAB并行环境路径中。单击File→SetPat→AddFolder,如图9-10所示。
图9-10 部署m文件
(7)执行
首先,创建symexec命令执行会话。
然后,在MATLAB命令窗口中输入
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。