2013-11-09 31 views
2

我在我的大学为流体动力学模拟设置了一个小型的256核心计算集群。我们使用的代码是用C和Fortran混合编写的,目前运行在大型超级计算机上很好。集群中的混合AMD和Intel节点......考虑因素?

在我们的集群化发展,我们与各16个AMD CPU的16个计算节点。我们还有一个我们想用作“头”或“登录”节点的8核心戴尔盒子。不过,这个盒子是英特尔氙气。

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

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

如果有很好的资源可以帮助,我们也会很感激。我们在各种网页上发现了很多建议和想法......指出社区认为有信誉的社区会很高兴。 (免责声明......我们是不是计算机科学家,我们只是普通的科学家。)

+0

你是邪恶的科学家吗?您使用什么软件来配置和管理群集? – Holly

+0

我们在节点上运行Slackware Linux并使用MPICH2并行运行程序。我们的gcc和gfortran二进制文件在本地编译,以及我们软件所需的库。我们非常乐于接受像Torque这样的管理程序的想法,或者对Linux发行版的改变,如果有强制性的动机去做。 (邪恶的科学家?只有在周末...) –

回答

1

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

由于(1)是不成问题的,一个不需要一种解决方法。仍然需要注意的是,一些编译器默认启用了处理器的指令集和优化,编译代码在该处理器上进行。因此,当头节点使用来自不同供应商或甚至来自同一供应商的CPU时,编译器选项必须格外小心。英特尔的编译器套件尤其如此,而默认情况下GCC的攻击性较差。另一方面,通常可以指示编译器针对哪些体系结构并进行优化,例如,通过向GCC提供适当的-mtune=...选项。

对于共享文件系统,它取决于你的数据存储是如何组织的。并行应用程序通常需要访问所有级别的相同文件(例如配置文件,数据库等),因此需要共享家庭和工作文件系统(除非使用家庭文件系统作为工作文件系统)。您也可能想分享诸如/opt(或存储群集范围软件包的任何位置)以简化群集管理。

这是很难给你指向一个明确的来源,因为有许多“最佳实践”为世界各地的群集安装。只要坚持一个工作设置,并迭代调整它,直到达到收敛。安装TORQUE是一个好的开始。