【问题标题】:Unable to get console input using MPJ Express (MPI)无法使用 MPJ Express (MPI) 获取控制台输入
【发布时间】:2023-03-04 15:48:01
【问题描述】:

我正在尝试使用名为 MPJ-Express 的 MPI 的 Java 实现,但遇到了一个错误,我无法在运行我的应用程序的节点上读取控制台输入。为了演示这个问题,我做了以下简单的程序。

public class TestConsole {

    /**
     * @param args
     */
    public static void main(String[] args) {
        BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
        String aLine = "";

        if (MPI.COMM_WORLD.Rank() == 0)
        {
            while(!aLine.equals("exit"))
            {
                System.out.println("please enter data: ");
                try {
                    aLine = bufferRead.readLine();
        System.out.println(aLine);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }

}

如果我使用 mpjrun 运行该应用程序,我会看到提示“请输入数据:”,无论我输入什么,我都无法得到任何回显的内容。当我使用普通的旧 java -jar blah 运行应用程序时,应用程序运行良好(当然在剥离 mpi 内容之后)。

我正在使用 3 个运行 ubuntu 的虚拟机。根据我的阅读,MPJ 应该在 0 级节点上接受控制台输入,所以我不确定我做错了什么。

【问题讨论】:

    标签: java jvm mpi mpj-express


    【解决方案1】:

    昨天有一个非常相似的问题:https://stackoverflow.com/a/26640877/491687

    您不应依赖在 MPI 程序中使用 stdin。转发输入所需的机制有些不可靠且非常棘手。在 MPI 程序中获取输入的常用方法是从文件中读取。这更加可靠,因为文件可以轻松地在所有进程中可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多