【问题标题】:Gnu make on multiple host machine?Gnu make 在多台主机上?
【发布时间】:2014-08-22 03:06:42
【问题描述】:

在 clearmake 中有一个传递主机名的选项,以便在这些主机上运行多个作业,但在 gmake 中没有传递多个主机的选项,尽管可以传递多个作业。 我想知道如何模仿这个 clearmake 功能?

【问题讨论】:

  • 最近的 GNU make 4.0 可以在 Guile 中编写脚本;也许您可以使用一些 Guile 代码编写缺少的功能。

标签: parallel-processing makefile clearcase gnu-make


【解决方案1】:

对于希望在多个系统上分发使用标准 make 工具(如 GNU make)运行的构建的人,通常的答案是使用 distcc 之类的东西。

【讨论】:

    【解决方案2】:

    正如 sfjac 所写,GNU Make 不为跨机器分配进程提供任何支持。 所以你必须自己设置这样的支持。

    这样做的一种方法是将$(SHELL) 更改为可以接受shell 命令并在不同主机上执行它的东西,并且还可以选择要使用的主机,这样总工作就会以合理的方式分配. 你可以编写一个脚本来调用ssh 并做一些簿记来选择主机。

    另一个问题是如何在机器之间传达先决条件和结果。 假设您的 Makefile 所做的只是查看文件并根据其内容创建其他文件。

    一种选择是将所有内容放在共享文件系统上,但这可能会产生同步问题(取决于您共享文件的方式以及您的recipes 处理此类问题的方式)。另一种选择是让每个主机使用本地文件系统,并在执行每个命令之前和之后以某种方式镜像它(使用rsync?)(但只有命令读取或写入的文件)。 clearmake 是如何解决这个问题的?

    因此,使这项工作可靠的难易程度很大程度上取决于您的 Makefile 及其配方的复杂程度。

    我注意到存在一些所谓的distributed shells 可能会或可能不会让生活更轻松 - 我从未使用过它们。

    【讨论】:

      【解决方案3】:

      GNU make 可以在一台机器上运行多个进程(请参阅 -j 选项),但它没有设置为在多台机器上进行并行生成,我认为这是您想要做的。 clearmake 有一个 -C gnu 选项,如果您只是在使用 GNU make 的一些功能(我没有使用此选项的经验,但在文档中注意到它。YMMV。),它将导致它模拟 GNU make。

      【讨论】:

        【解决方案4】:

        另一种选择是 [makeflow] (http://ccl.cse.nd.edu/software/makeflow/)。它允许在许多 HPC 基础架构(例如 SLURM、Torque)上运行生成(简化)文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-10
          • 2012-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多