我应该如何学习创建和编程 HPC 系统?

计算科学 高性能计算 教育
2021-12-10 23:14:23

我所在的领域不一定要做大量的 HPC 工作,当它遇到它时,通常是其他领域的研究人员探索他们的方法等新应用的结果。这主要意味着它永远不会真正在学习过程中被引入,或者在研讨会、研讨会等中被提及——有可能在不需要它的情况下完成一个人的整个职业生涯。

然而,与此同时,我所做的大部分工作都可以从更好地利用我可用的 HPC 资源中受益——主要是以很好的并行蒙特卡罗模拟的形式。

我的问题是寻找资源来学习如何使用集群、MPI 等。考虑到我知道的不多,所以要区分好坏。

关于在这些类型的系统上进行编程或设置和运行自己的非常普通的 HPC 设置的书籍有什么建议吗?

3个回答

查看HPC 大学特别是资源部分,其中包括诸如

以及更多。

有许多高等教育课程包括 HPC 课程例如,我自己的课程包括

  • 高性能计算(2 个学期)
  • 并行编程范式
  • 科学软件工程
  • GPU 和 GPGPU 编程

以及科学计算和数值分析方面的各种课程。

我个人的经验是,HPC 需要如此广泛的技能,而仅仅在一本书、食谱、大学课程中很难做到这一点。考虑到 HPC 不是要对大型机器进行编程或构建集群,而是要在计算的最前沿解决重大的科学问题。

我不确定每个人都会同意,但我认为 HPC 涉及的领域列表可能是:

这些领域中的每一个都非常大,并且有如此多的知识,在尝试做任何事情之前很难掌握一切!

就我而言,我从工程的一个角落开始,慢慢积累经验和协作网络。一开始我只有一个想要解决的工程/应用数学问题,从那里我转向编程,通过更强大的计算机获得更高的性能,数字分析,高级算法,并行计算机,并行算法,到更大的计算机,到更完整的科学模型,最终到一个新问题并再次迭代。如果我回头看,试图理解和解决我的第一个问题就是制定我的学习计划的原因。有一个可以让你走上正轨的主管也有很大帮助,否则要小心不要忽视你的最终目标(在我的情况下,这是我手头的科学问题)。

如果我必须说出在 HPC 道路上真正有所作为的一件事,那就是结识来自其他领域的人,交流想法,并利用社区的分布式知识。此外,重要的是不要太害怕公开天真和做傻事。第一步总是困难的,也是最重要的!

这是我在即将到来的春天自学一些 HPC 基础的计划。在过去的 15 年里,我一直是一名开发人员,专门从事 Microsoft 技术工作。我也是学生,所以可以通过MSDN Academic Alliance免费获得一些软件(您的个人资料表明您是一名研究生,因此您应该检查您的学校是否参与),并且为家里的东西腾出空间是限制因素。我的办公室/书房/ManCave 里面已经有很多电脑,所以我已经可以测试一些东西了。Windows Server 2008 HPC 列在一些可用的软件包中,但在过去的学期中,它似乎从我学校的可下载软件中消失了(“集群计算包”是 server 2003 的附加组件,而 server 2008 hpc 带有精简版服务器 2008,使用 ccp,您必须禁用不需要的服务)。

我计划的拓扑是“启用 SOA 的集群”,这是此页面上的第四张图片(单击主图片下方的小方块)。我已经安装了 Active Directory 和其他一些服务器,所以我正在考虑从 eBay 购买 4 台便宜的戴尔小型计算机(翻新戴尔 655 SFF 似乎在 100-200 美元的范围内运行)。由于我只是想学习一些东西,我相信我只需要一个“头节点”、一个“代理节点”和 2 个“计算节点”以及一些备用以太网卡来查看私有和应用程序总线(来自该图像) 做。MSDNAA 许可证最多允许 16 个计算节点,这远远超出了我的预期。

我一直在阅读Beowulf Cluster Computing with Windows,我想我已经知道我在办公室的一些想法所面临的挑战(这本书有一个 linux 版本,但我有 0 个 linux 技能/平台在家 - 做适合自己的事)。办公室有很多大型集群,但它们已经饱和,教育性的“我想/需要学习 X”的时间段很难获得。在提交工作之前,人们已经期望知道这些东西。