如何通过单个进程读取MPI中的txt文件?为什么我的方法不起作用?

时间:2013-02-06 20:27:12

标签: parallel-processing mpi

我是MPI的新手。 我正在尝试使用标准c ++代码读取文本文件,如下所示。

int main(int argc, char* argv[] ){

int np, pid, ierr;
ierr = MPI_Init(&argc, &argv);
ierr = MPI_Comm_size(MPI_COMM_WORLD, &np);
ierr = MPI_Comm_rank(MPI_COMM_WORLD, &pid);


const int imgWidth = 1000; // the width of the image (count in pixel)
const int imgHeight = 1000; // the height of the image

double* Y;
Y = (double *)malloc(imgHeight*imgWidth*sizeof(double));

if(pid == 0)
{
    string input = "Im.txt";
    readData(input.c_str(), Y);
}
MPI_Bcast(Y, imgHeight*imgWidth, MPI_DOUBLE, 0, MPI_COMM_WORLD);


free(Y);

MPI_Finalize();

return 1;

}

readData函数定义为:

bool readData(const char *fileName, double* Y){

printf("Reading the data file!\n");

ifstream fin(fileName);

int i = 0;
while(fin>>Y[i])
{   
    i++;
};
cout<<"In total, "<<i<<" data are imported."<<endl;
//close the file
fin.close();

return 1;

}

文件“Im.txt”包含一堆数字。但是,当我运行程序时,没有导入数据。任何人都可以给我一个提示吗?我不需要使用乘法进程来并行读取此文件。

1 个答案:

答案 0 :(得分:0)

最后,我发现了问题。我正在使用visual studio在win7下工作。似乎我必须明确指出我的文件的路径。即使我将“Im.txt”放在与源代码文件相同的文件夹中,它也不起作用。