gpt4 book ai didi

java - MPJ/集群配置无法在另一个线程上接收来自自身的消息

转载 作者:行者123 更新时间:2023-12-01 11:58:21 24 4
gpt4 key购买 nike

我正在使用 MPJ 构建一个简单的分布式应用程序(基本上是另一个生产者/消费者问题),并且在使用多个线程时从同一台机器接收数据时遇到了巨大的问题。

示例代码:

Thread t = new Thread(new Runnable() {
@Override
public void run() {
int[] buf = new int[2];
MPI.COMM_WORLD.Recv(buf, 0, 2, MPI.INT, MPI.ANY_SOURCE, 1);
System.out.println("Got: " + buf[0]);
}
});
t.start();
Thread.sleep(100);
MPI.COMM_WORLD.Isend(new int[] {1,0}, 0, 2, MPI.INT, MPI.COMM_WORLD.Rank(), 1);
Thread.sleep(100);
t.join();

想法很简单:一个线程监听所有机器并接受来自 a) 不同机器(这工作正常)b) 同一机器上不同线程的请求 - 这仅适用于多核模式。

有没有办法让它在集群配置中工作?

如果这是不可能的,是否至少有一种方法可以在某些事件(终止检测)后正确退出监听器线程而无需忙于轮询? (Request.Cancel显然在v0.43中没有实现-_-)

谢谢

最佳答案

您可以尝试 MPJ Express“混合设备”

混合设备适用于计划在此类多核计算机集群上执行并行 Java 应用程序的用户。混合设备透明地使用多核配置和集群配置用于节点内通信和集群配置(仅限 NIO 设备)分别进行节点间通信

用法:mpjrun.sh -np 4 -dev hybdev HelloWorld

关于java - MPJ/集群配置无法在另一个线程上接收来自自身的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28183380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com