减少 mpi 使用的 JVM 数量

reducing number of JVM's used by mpi

我正在使用 MPI, but I have this feeling I'm wasting the resources because of the way open-mpi 作品在 HPC 上编写 java 到 运行 的程序。实际上我完全不确定它是如何工作的,但我假设 mpirun -n 10 java myProgram.java 在不同的 nodes/cores/etc 上启动 myProgram 10 次。 (取决于绑定)每次。这也意味着,就我对 JVM 的理解而言,10 个 JVM 运行ning.

在对我的程序进行了一些测试后 运行s,使用默认设置(绑定到内核并尽可能在 1 个节点上打包所有内容),我意识到内存使用率非常低,并开始结论 我将不得不对 JVM 的多样性做些什么。我试图放松从核心到节点的绑定,但我并没有使用所有可能的处理能力。我也已经尝试使用多线程来解决该问题,但我读到 (somew)here 这也不是最好的想法之一(但我仍在努力寻找解决方法)。

所以我的问题是:
是否存在使用 open-mpi link 每个节点只有一个 JVM 的方法?
备选方案:如何更好地利用内存?

提前致谢

正如评论中已经提到的Hristo Iliev,混合方法解决了我的问题。为了避免必须使用 MPI_THREAD_MULTIPLE,我静态地分发了工作。然后程序可以运行和mpirun --map-by ppr:1:node --bind-to board java <java-program>来限制一个节点上的进程数运行。