Mpi 群集中混合了AMD和Intel节点。。。考虑因素?

Mpi 群集中混合了AMD和Intel节点。。。考虑因素?,mpi,cluster-computing,nfs,Mpi,Cluster Computing,Nfs,我正在我的大学建立一个256核的小型计算集群,用于流体动力学模拟。我们使用的代码是用C和Fortran混合编写的,目前在大型超级计算机上运行良好 在我们的集群开发中,我们有16个计算节点,每个节点有16个AMD CPU。我们还有一个8核的戴尔机箱,我们想用它作为“主机”或“登录”节点。然而,这个盒子是Intel Xenon 我们希望NFS将每个用户的主目录装载到登录节点,并限制他们对计算节点的访问。这将要求用户通过登录节点上的mpirun编译和运行他们的程序。我们的问题是: 对于这样的混合CPU

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

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

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

  • 对于这样的混合CPU系统,这可能吗?或者我们在英特尔上编译和在AMD上执行时会遇到问题吗
  • 如果这是一个问题,有解决办法吗?我们是否可以让用户在计算节点上透明地编译代码,而只登录到登录节点
  • 在具有头节点的集群中,是否应该仅通过NFS装载共享主目录?或者,我们是否也应该在compute和head节点之间共享其他目录

  • 如果有好的资源可以帮助我们,我们也会很感激的。我们在不同的页面上找到了很多建议和想法。。。如果能被指给社区认为有信誉的人,那就太好了。(免责声明……我们不是计算机科学家,我们只是普通科学家。)

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

    因为(1)不是问题,所以不需要解决方法。仍然需要记住的是,一些编译器默认为编译代码的处理器启用指令集和优化。因此,当head节点使用来自不同供应商或甚至来自同一供应商但来自不同代的CPU时,必须格外小心编译器选项。英特尔编译器套件尤其如此,而默认情况下GCC的攻击性较小。另一方面,通常可以通过向GCC提供适当的
    -mtune=…
    选项来指示编译器针对什么体系结构进行目标和优化

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


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

    你们是邪恶的科学家吗?您使用什么软件来配置和管理集群?我们在节点上运行Slackware Linux,并使用MPICH2并行运行程序。我们的gcc和gfortran二进制文件是本地编译的,还有我们的软件所需的库。我们对管理程序的想法非常开放,比如Torque,或者Linux发行版的改变,如果有令人信服的动机的话。(邪恶的科学家?只在周末…)