如何将文本文件转换为MPI_Bcast可发送的格式?

时间:2018-12-13 10:27:00

标签: c++ mpi

我是MPI和C的初学者,我尝试提高自己的能力,但是我有一个问题,无法解决。

我有一个文本文件,其中包含我的名字。我需要做的是MPI中的进程0应该读取此文本文件并将其发送给其他进程。我遵循的方式如下:

if (myid == 0) {    
    // Read myname.txt file and convert it to a string
    char name[100];
    ifstream input("myname.txt");
    for (int i = 1; i < nprocs; i++){
        input >> name;
        cout << name;   
    }
    input.close();

    // Send name and alphabet strings to all processors by means of broadcasting
    MPI_Bcast(&name, 100, MPI_CHAR, 0, MPI_COMM_WORLD);
}

执行此操作时,使用此“名称”缓冲区的其他进程的操作将无法完成,并出现此类错误:

'name' was not declared in this scope.

在生成此“&name”地址时,我有一个错误。您能帮我解决这个问题吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

您需要提供一个位置来存储所有级别的数组,并且name已经是一个指针:

char name[100];
if (myid == 0) {    
    // Read myname.txt file and convert it to a string
    ifstream input("myname.txt");
    for (int i = 1; i < nprocs; i++){
        input >> name;
        cout << name;
    }
    input.close();
}
// Send name and alphabet strings to all processors by means of broadcasting
MPI_Bcast(name, 100, MPI_CHAR, 0, MPI_COMM_WORLD);

MPI_Bcast的呼叫在所有级别上都是相同的,无需将其放在if内。在等级0上唯一要做的就是读取文件。