【问题标题】:matlab distributed computing with sge(qsub)matlab分布式计算与sge(qsub)
【发布时间】:2011-04-23 00:59:51
【问题描述】:

最近我可以在集群上运行我的代码。我的代码是完全可并行化的,但我不知道如何最好地利用它的并行特性。我必须计算一个大矩阵的元素,每个元素都独立于其他元素。我想提交作业以在多台机器(如 100 台)上运行以加快矩阵的计算。

现在,我编写了一个脚本来提交多个作业,每个作业负责计算矩阵的一部分并将其保存在 .mat 文件中。最后,我将它们合并以获得整个矩阵。为了提交每个单独的作业,我创建了一个新的 .m 文件(run1.m、run.2、...)来设置一个变量,然后运行该函数来计算矩阵中的相关部分。所以基本上 run1.m 是

id=1;compute_dists_matrix

然后 compute_dists_matrix 使用 id 来查找它要计算的部分。然后我写了一个脚本来创建 run1.m 到 run60.m 和 qsub 到集群。

我想知道是否有更好的方法来做到这一点,例如使用一些 MATLAB 功能。因为这似乎是一个非常典型的任务。

【问题讨论】:

    标签: matlab distributed-computing qsub sungridengine parallel-processing


    【解决方案1】:

    是的,它有效,但并不理想,正如您所说,这是一个常见问题。 Matlab 有一个parallel programming toolkit

    你的集群有这个吗?如果是这样,distributed arrays 值得一看。如果他们无法访问它,那么您正在做的就是唯一的另一种方式。你可以将你的 run1.m,run2.m 包装在一个控制脚本中,为你自动化它......

    【讨论】:

      【解决方案2】:

      我相信您可以对 id 使用命令行参数并使用该 id 的一系列值提交作业。可以通过在没有 IDE 的情况下从命令行启动 MATLAB 并提供要执行的脚本名称和参数列表来处理命令行参数。我认为您可以在作业管理器中设置依赖项并创建一个“减少”脚本来合并部分结果(来自文件)。整个过程可以通过单个脚本进行管理,该脚本将生成 id 和其他必要的参数,并提交具有依赖关系的处理和后处理作业。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-02
        • 2013-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        相关资源
        最近更新 更多