为什么在我添加 MPI 时文件打不开?
Why don't files open when I add MPI?
当我的程序在没有 MPI 的情况下运行时,打开文件一切正常,但是当我添加 MPI 时,文件无法打开。这是为什么?
我的代码:
void fileEntry(string path, int n) {
ofstream fout;
fout.open(path);
if (!fout.is_open()) {
cout << "File open error";
}
else {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
fout << rand() % 100 << " ";
}
fout << "\n";
}
}
fout.close();
}
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &WORLD_RANK);
MPI_Comm_size(MPI_COMM_WORLD, &WORLD_SIZE);
if (WORLD_RANK == 0) {
// размерность
int dimension = 0;
cout << "Введите размерность матрицы:\n";
cin >> dimension;
// записываем данные в файлы
fileEntry("MatrixA.txt", dimension);
fileEntry("MatrixB.txt", dimension);
...
}
这段代码给出了两次:文件打开错误。
我在7个进程中启动项目,但是没关系,因为我只在一个0进程中专门打开文件。我不需要文件打开7次,我需要1次。
因此,不仅是开场,而且通常是任何文件工作。
我没有足够的声誉来发表评论,所以在这里发帖。
根据您的评论,errno 13
代表 'permission denied' 和 errno 2
- 'No such file or directory'
首先我建议尝试使用完整 filepath
,然后尝试提供对文件或目录的正确权限。
当我的程序在没有 MPI 的情况下运行时,打开文件一切正常,但是当我添加 MPI 时,文件无法打开。这是为什么?
我的代码:
void fileEntry(string path, int n) {
ofstream fout;
fout.open(path);
if (!fout.is_open()) {
cout << "File open error";
}
else {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
fout << rand() % 100 << " ";
}
fout << "\n";
}
}
fout.close();
}
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &WORLD_RANK);
MPI_Comm_size(MPI_COMM_WORLD, &WORLD_SIZE);
if (WORLD_RANK == 0) {
// размерность
int dimension = 0;
cout << "Введите размерность матрицы:\n";
cin >> dimension;
// записываем данные в файлы
fileEntry("MatrixA.txt", dimension);
fileEntry("MatrixB.txt", dimension);
...
}
这段代码给出了两次:文件打开错误。
我在7个进程中启动项目,但是没关系,因为我只在一个0进程中专门打开文件。我不需要文件打开7次,我需要1次。
因此,不仅是开场,而且通常是任何文件工作。
我没有足够的声誉来发表评论,所以在这里发帖。
根据您的评论,errno 13
代表 'permission denied' 和 errno 2
- 'No such file or directory'
首先我建议尝试使用完整 filepath
,然后尝试提供对文件或目录的正确权限。