c++ - 为什么我添加 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
代表“权限被拒绝”和errno 2
-“没有这样的文件或目录”
首先我建议尝试使用 full filepath
,然后尝试为文件或目录提供正确的权限。