MATLAB的博客

实用的建议在前沿的人

直接提交从MATLAB HPC集群

更多的计算,更多的问题

高性能计算资源时,我是一个幸运的家伙。我有一个相当不错的,8核心的桌面连同客人访问世界各地的学术HPC集群的合理数量。自从我努力成为一个有礼貌的客人,我利用一个健康云预算当我需要做一些繁重的计算和使用所有主要的云提供商。
在过去,进入这样一个多样的计算是一个诅咒,这是一个祝福。例如,许多系统使用不同的调度程序。即使两个系统有相同的调度程序(SLURM通常),他们有不同的模块文件,不同的身份验证过程和不同的文件系统布局等等。利用这些计算财富实际上是一种负担。
然后你有一个不同的访问方法。从经典的ssh / sftp命令行接口更现代的事情OpenOn需求,ThinLincJupyter笔记本。都是好东西,但很多在摆弄一个数组(诚然令人着迷)技术时通常所有你要做的是让你的结果与尽可能少的大惊小怪更快。
不是很好如果我能与所有这些高性能计算和云机器不需要离开MATLAB ?没有Linux调度器和shell脚本,MATLAB ?你可以,我将向您展示如何去做。

提交的所有东西,直接从MATLAB

想象一下有一个函数:
[result1,编写此表达式result2] = bigComputation (N)
这是一个计算的大!单一输入参数是一个整数,它定义了多么大,它有两个输出数组。显然它还因为这篇文章是HPC并行运行。
好的,这是我如何运行这个函数使用MATLAB在我的各种机器。首先,我们定义问题和创建对象代表我的计算资源。
%定义计算我想做多大
N = 1 e8;
%创建并行集群对象代表我的各种计算资源
myMachine = parcluster (“进程”);%我的本地电脑
onPremHPC = parcluster (“Bantshire HPC的大学”);%粘基于很多集群
cloudHPC = parcluster (“MyAWS集群”);% MATLAB云中心集群运行在AWS上
  • 流程概要文件的一个MATLAB违约和在那里当我安装。它点到我的本地机器而另两个集群涉及一些配置。
  • onPremHPC集群配置文件给我的系统管理员SLURM-based集群配置他们机器使用MATLAB GitHub上粘插件很多还有一点帮助从我们的HPC支持团队。金宝app
  • 我能够导入cloudHPC配置文件配置后AWS云计算集群使用MathWorks云中心
这个概要文件配置只有做一次。有一天,我将告诉你如何做但我很久以前我忘了的步骤,我需要这篇文章发表在时间国际超级计算2023 (ISC23),所以今天我只是显示你的日常工作流程。
剩下的工作就是提交使用MATLAB函数批处理命令。这是的结构
批处理(clusterObject @functionToRun numberOfOutputArguments, {inputArguments},选项)
今天唯一的选择我要用请求一个特定数量的工人在我的本地机器或远程资源。
%提交到本地机器上
LocalJob =批(myMachine @bigComputation 2 {N},池= 4);%向池4工人在我的本地机器
%向粘集群很多
onPremJob =批(onPremHPC @bigComputation 2 {N},池= 31);%提交一个31名工人池粘HPC集群很多
因为我在两台计算机上都运行相同的计算,这两个调用批处理几乎相同,但在幕后发生了什么很不同!
提交我的本地机器就是运行在本地吗parpool几乎完全好像直接在命令行运行功能。平行工作在本地的主要好处是它阻塞。而4核心服务在后台工作,我可以用我剩下的核心与MATLAB交互式地工作。
提交粘集群很多是一个非常不同的野兽。在幕后,它首先登录到HPC集群;你可能会认为给我任何身份验证的挑战。两因素身份验证不是一个问题。然后,它压缩我的代码,将它转移到集群通过sftp,创建和提交一个粘系统的工作很多....所有根据政策制定的系统管理员。我不需要担心任何,我只是用上面的线。
提交到AWS集群有一个额外的步骤。我付钱的时间为了省钱所以我保持它关闭。因此,我必须先启动它!
开始(cloudHPC)
这开始的启动序列几乎立即云团并返回,让你继续互动在本地机器上使用。如果你想确保cloudHPC已经完成了设置在运行下一行的代码之前,您需要做什么
等待(cloudHPC)%等到cloudHPC已经准备好接受工作
除此之外,批处理命令的结构是相同的。
cloudJob =批(cloudHPC @bigComputation 2 {N},池= 63);%向云计算集群上63名工人
的配置cloudHPC(不是这里讨论),我设置它auto-shutdown一旦集群闲置。因此,我不需要担心运行了一个巨大的云比尔偶然。
不过,如果我想确保我可以先等待工作完成
等待(cloudJob)
然后关闭集群明确
关闭(cloudHPC)

得到结果后

在我的机器上运行的工作,我可以监视他们的国家如果我喜欢使用监控工作。相反,我只是去散步在阳光下,现在它的时间把我的结果。我可以获取输出的任何工作fetchOutputs命令。这里是结果从本地机器上运行。
fetchOutputs (LocalJob)
ans =1×2细胞
1 2
1 0.1349 0.6744
回想一下,我的函数bigCompute (N)2输出和在这里!似乎值得几个小时的计算,但通常是大HPC的方式工作。让我们希望这些数字意味着科学!
抓取的输出粘和云很多机器一样简单。这是由于粘集群很多
fetchOutputs (onPremJob)
ans =1×2细胞
1 2
1 0.1349 0.6744
同样的计算,同样的结果!不足为奇,但想想其实是做什么呢?MATLAB连接到集群中,获取返回的结果和他们这种生活只有一个命令脚本。没有ssh、sftp, MATLAB

希望这个对你HPC集群?

我已经省略了很多细节几乎是犯罪!有那么多可以做(做),我们能够让整个,为期一天的教程在这个东西。这篇文章的目的是介绍工作流的骨架,展示HPC在MATLAB可以多么简单,希望开始一些与MATLAB和世界各地的HPC系统管理员用户。如果你想了解更多,我的消息推特,LinkedIn或者去MATLAB并行服务器- MATLAB (mathworks.com)并在右下角点击链接。
我还将在下周国际超级计算2023年在汉堡穿着MATLAB帽为那些想要说话
|

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그인하거나계정을새로만드십시오。