2

我正在我的大学建立一个小型的 256 核计算集群,用于流体动力学模拟。我们使用的代码是用 C 和 Fortran 混合编写的,目前在大型超级计算机上运行良好。

在我们的集群开发中,我们有 16 个计算节点,每个节点有 16 个 AMD CPU。我们还有一个 8 核的戴尔盒子,我们想将其用作“头”或“登录”节点。然而,这个盒子是 Intel Xenon。

我们希望 NFS 将每个用户的主目录挂载到登录节点并限制他们对计算节点的访问。这将要求用户通过登录节点上的 mpirun 编译和运行他们的程序。我们的问题是:

  1. 像这样的混合 CPU 系统有可能吗?或者我们会遇到在 Intel 上编译和在 AMD 上执行的问题吗?
  2. 如果这是一个问题,是否有解决方法?我们能否以某种方式让用户在仅登录到登录节点时在计算节点上透明地编译他们的代码?
  3. 在具有头节点的集群中,是否应该仅通过 NFS 挂载共享主目录?或者是否还有其他目录我们也应该在计算和头节点之间共享?

如果那里有一个很好的资源可以提供帮助,我们也会很感激。我们在各个页面上发现了很多建议和想法……如果能指出社区认为信誉良好的内容,那就太好了。(免责声明......我们不是计算机科学家,我们只是普通科学家。)

4

1 回答 1

1

英特尔和 AMD 处理器在很大程度上是二进制兼容的,尽管缓存大小和指令调度存在差异,如果代码是针对英特尔优化编译的,则可能导致特定代码在 AMD 上的运行不理想,反之亦然。两家供应商实现的指令集存在一些差异,但这些在科学计算中通常不是很有用。

由于(1)不是问题,因此不需要解决方法。仍然必须记住,一些编译器默认启用指令集和处理器的优化,在其上编译代码。因此,当头节点使用来自不同供应商或什至来自同一供应商但来自不同代的 CPU 时,必须格外小心编译器选项。对于英特尔的编译器套件尤其如此,而 GCC 默认情况下不那么激进。另一方面,通常可以指示编译器以何种架构为目标和优化,例如通过向-mtune=...GCC 提供适当的选项。

至于共享文件系统,这取决于您的数据存储的组织方式。并行应用程序通常需要访问所有级别的相同文件(例如配置文件、数据库等),因此需要共享主文件系统和工作文件系统(除非使用主文件系统作为工作文件系统)。此外,您可能希望共享诸如/opt(或存储集群范围软件包的任何位置)之类的东西,以简化集群管理。

很难为您指出一个明确的来源,因为世界各地的“最佳实践”与集群安装一样多。只需坚持一个工作设置并反复调整它,直到达到收敛。安装 TORQUE 是一个好的开始。

于 2013-11-10T16:18:44.690 回答