簡體   English   中英

MPI:通訊錯誤,等級1:連接被拒絕

[英]MPI : Communication error with rank 1: Connection refused

我有一個簡單的mpi程序,如下所示:

#include <iostream>
#include <mpi.h>

int main(int argc, char * argv[]) {
    MPI::Init(argc, argv);

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int number;
    if (world_rank == 0) {
        number = -1;
        MPI_Send(&number, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
    } else if (world_rank == 1) {
        MPI_Recv(&number, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,
                 MPI_STATUS_IGNORE);
        printf("Process 1 received number %d from process 0\n",
               number);
    }


    return 0;
}

我指定了一個包含2個條目的主機文件。 服務器是我在其上運行mpi的本地計算機,而ubuntu是遠程計算機。

Server
ubuntu

當我嘗試通過運行mpirun -np 2 --hostfile hosts ./test運行mpi可執行文件時,它給我一個錯誤Communication error with rank 1: Connection refused 但是,如果我顛倒了主機文件中的主機順序

ubuntu
Server

工作正常。 我似乎不明白為什么。 主機文件中主機的順序重要嗎?

我碰到了與您在運行時錯誤中遇到的相同問題。

確保您可以使用ssh並登錄到沒有密碼的客戶端計算機之后。 MPICH主服務器無法找到客戶端(從機)主機名的主要原因是因為客戶端在/etc/hosts file ,本地主機名既分配給了客戶端用戶名又分配給了本地主機本身,例如,運行sudo vim etc/hosts您將擁有機器的主機名列表:

127.0.0.1 clientUsrName
127.0.0.1 localhost

順序根本不重要。 您所要做的就是注釋您的clientUsrName錯誤,該錯誤將127.0.0.1稱為localhost IP。 例如:

# 127.0.0.1 clientUsrName
127.0.0.1 localhost

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM