用sge(qsub)进行matlab分布式计算

| 最近,我可以在群集上运行代码。我的代码是完全可参数化的,但是我不知道如何最好地使用其并行性。我必须计算一个大矩阵的元素,并且每个元素都彼此独立。我想提交要在几台机器(例如100)上运行的作业,以加快矩阵的计算速度。 现在,我编写了一个脚本来提交多个作业,每个作业负责计算矩阵的一部分并将其保存在.mat文件中。最后,我将它们合并以获得整个矩阵。为了提交每个作业,我创建了一个新的.m文件(run1.m,run.2等)来设置变量,然后运行该函数以计算矩阵中的相关部分。所以基本上run1.m是
id=1;compute_dists_matrix
然后,compute_dists_matrix使用ID查找要计算的部分。然后,我编写了一个脚本,以通过run60.m创建run1.m并将它们qsub到集群。 我想知道是否有更好的方法来使用例如某些MATLAB功能。因为这似乎是非常典型的任务。     
已邀请:
是的,它可以工作,但并不理想,正如您所说的是一个普遍问题。 Matlab有一个并行编程工具包。 您的集群有这个吗?如果是这样,则分布式阵列值得一看。如果他们没有访问权限,那么您正在做的事情就是唯一的方法。您可以将run1.m,run2.m包装在控制脚本中,以自动为您...     
我相信您可以为id使用命令行参数,并为此ID提交具有一系列值的作业。可以通过以下方式处理命令行自变量:不使用IDE从命令行启动MATLAB,并提供要执行的脚本名称和自变量列表。我认为您可以在作业管理器中设置依赖项并创建\“ reduce \”脚本以合并部分结果(来自文件)。整个过程可以通过一个脚本进行管理,该脚本将生成id和其他必要的参数,并提交具有依赖项的处理和后处理作业。     

要回复问题请先登录注册