假设我们有四个16核节点(node1,node2,node3,node4)。如何在node1,2,3上同时运行一个大的并行程序?或者甚至总共使用16个核心,但是在node1 + 8cores in node2 + 1core in node3(其他部分被占用)中分配为7个核心? MPI 是常见的方式吗? openmp 是否足够?我还没有学过MPI,但是在单个节点中使用了openmp。
答案 0 :(得分:1)
如果需要,您可以同时使用OpenMP和MPI的组合。 虽然MPI确实利用了每个节点上的每个核心,并且当它发现其他任务在同一台机器上时已经过优化以使用参考局部性,但代码库需要在已经开发的情况下进行大量更改。 建议使用OpenMP逐步并行化代码,因此您可能需要协调混合,其中MPI的每个任务都使用OpenMP来使用核心。 所以节点数= MPI任务数 每台计算机的核心数=每台计算机的OpenMP任务数