高性能计算 (HPC) 的最佳平台是什么?
我想,Windows 早已不复存在。所以只有 Unix 和 Linux 才有机会。什么平台会强烈支持我对计算力学的兴趣?
应用领域是大型动态有限元问题,方法将是多物理场、多尺度建模。与消费硬件集群将是重点(降低成本)。
高性能计算 (HPC) 的最佳平台是什么?
我想,Windows 早已不复存在。所以只有 Unix 和 Linux 才有机会。什么平台会强烈支持我对计算力学的兴趣?
应用领域是大型动态有限元问题,方法将是多物理场、多尺度建模。与消费硬件集群将是重点(降低成本)。
Linux 占据了 petaflops/超级计算前 10 名中的所有 10 个位置,但操作系统可能不是您应该关注的唯一方面。
大多数开发人员永远不会在最高端的机器上获得“时间”,直到他们有希望展示他们的努力。因此,您可能希望密切关注云计算 API的不断发展的标准。在这一点上,像亚马逊这样的供应商在建立事实上的标准方面处于领先地位,但开放标准社区正在努力促进可互操作的标准。
这是一个稍微不同的观点:Windows 并没有消失。相反,这些天它又在 HPC 中崭露头角。Microsoft 在 Windows 2008 HPC Server 中使用他们的集群工具做了出色的工作。他们的 MPI 实现(基于 MPICH2)与它的免费兄弟一样强大,并且 Windows 上的 InfiniBand 堆栈非常高效。还有很多商业软件可供选择,这些软件仅在 Windows 上可用,现在正在获得分布式计算能力。
也就是说,我强烈反对任何可以建议“最好的”HPC 平台的人。没有“一刀切”的平台,它取决于多种因素。500 强中的大多数机器都带有 Linux 或其他类 Unix 操作系统/内核,但这并不意味着您必须终生使用 Un*x。大型机器都是相似的——学习使用 MPI 和一个批处理系统,你可以全部使用它们(不过有一个警告——硬件的有效使用高度依赖于平台,但有一些通用规则)。
对于真正的 HPC 用户来说,平台只是一个在生产模式下执行他或她的代码的工具。重要的是开发环境。您可以在任何主要操作系统上使用 MPI 和/或 OpenMP 进行开发,无论是 Windows 或 Mac、Linux 或 Solaris,甚至是一些不起眼的操作系统,然后在计算中心(或云中)的 Linux 超级计算机上运行您的代码如果您遵守某些语言标准并且不使用特定于平台的 API。我们部门有几个人广泛使用 Visual Studio 来开发在我们庞大的 Linux 集群上运行的代码,只是因为他们发现 Linux 上的开发工具不够先进或方便。您可以自行决定找到适合您的风格和工作的最方便的环境。
如果您正在构建自己的系统,那么价格可能会是一个重要因素,并且操作系统的选择几乎预先确定为 Linux。如果您的工作依赖于仅适用于 Linux 的软件,它也可能是您的平台。此外,如果您仅将它们用于个人用途,英特尔会免费提供针对该操作系统的开发工具。Linux 还附带其默认的 GNU 编译器集合以及用于几乎任何东西的大量软件和库。
如果您想运行 Windows 软件并且可以负担额外的费用,那么 Windows 2008 HPC Server 是一个不错的选择。它将 HPC 环境与 ActiveDirectory 集成在一起,使系统的集中管理变得非常容易。英特尔为 Windows 上的 HPC 开发提供了出色的工具,但它们是有成本的,即使是私人使用也是如此。
由于英特尔开发工具可在两个平台上使用,并且它们支持相同种类的编程语言,因此在两个操作系统之间迁移代码非常容易。还有其他供应商,如 Portland Group,提供多平台高性能编译器和科学库。
至于连接性——如今,在 HPC 中,它要么是 InfiniBand,要么是多千兆以太网(例如 10 GigE)。两者都提供低延迟和高带宽,这是快速消息传递的必要条件。InfiniBand 速度更快,但成本更高。
这取决于计算机体系结构。当您说 HPC 平台时,我假设是一个多处理器计算集群。其中大部分将带有供应商特定风格的 UNIX,例如 IBM AIX 或 HPUX。如果您从头开始构建集群,最常见的选择是某种 Linux 风格。
Linux 是完全可定制的,这对于资源管理和性能优化很重要。这也使得构建/设置大型多处理器集群变得最方便。此外,大多数科学和工程软件和编译器都可以通过包管理器轻松获得 Linux,或者它们的源代码可用并且易于配置和编译。
究竟哪种 Linux 风格通常是一个偏好问题。