我对HPC世界很陌生。我想知道在开发特定于HPC.In的应用程序时所考虑的问题,在开发高性能HPC应用程序之前,是否需要对硬件/集群有很好的了解?还有什么其他考虑呢?
预先感谢普拉迪普
发布于 2014-12-09 14:22:44
普拉迪普,更多关于你想要完成的事情的信息在这里会有所帮助。
如果你想解决一个问题,我会研究你的问题,看看你遇到了什么限制,或者期望用一个线程实现。一旦您通过构建更大的机器或使用诸如MPI或GPU/MIC卡来解决这些限制,您将研究您的新实现,并查看它的扩展情况。跨4个节点(MPI)运行不会给您带来400%的加速比,但是您可以尽量靠近。找到你的新瓶颈,试着解决这些问题。您的代码I/O绑定了吗?您需要更快的存储,还是像Infiniband那样的低延迟和高带宽?您能重写一些代码以使其更快吗?或者不同的库或编译器会带来性能上的任何改进吗?
如果您正在考虑从系统方面进入HPC,您应该熟悉操作系统,可能是Linux,但它可能是其他的东西。看看它是如何构建的,以及组件是如何组合在一起的:头节点、存储、管理网络、互连。作业是如何提交和执行的?提交一些简单的工作,看看它是如何工作的。它可能类似于"hostname;echo hello world;see 300“,它将告诉您作业在哪里运行,产生一些额外的输出,并在足够长的时间内保持活动状态,您可以看到它在队列中运行。之后,您可以找到hello的MPI版本,您可以编译并跨几个节点运行。取决于您需要了解的深度,您可以看到节点是如何管理/安装的。这可能是供应商提供的系统,也可能是自己开发的系统,可以使用DHCP、PXE、kickstart文件和与Apache一起分发的自定义脚本安装RHEL/CentOS。你甚至可以用几台旧机器和一些类似于Rocks集群发行版的设备在小规模上尝试这一点。
有很多方法,你可以这样做,但它们都取决于你想要在哪里结束在你的高性能控制知识。
https://stackoverflow.com/questions/27375442
复制相似问题