Я пытаюсь прочитать int и дважды из TXT-файла.Когда я запускаю процесс в консоли, все работает, но когда я работаю через MPI с одним процессом, он выдает ошибку:
$ ./a.out
job aborted:
rank: node: exit code [: error message]
0: DESKTOP-QUJB667: -1073740791: process 0 exited without calling finalize
Я использовал только две команды для чтения из файла:
FILE * file = fopen ("pixel.txt", "r");
fscanf (file, "% d", & numOfPixelsInFile);
Проблема чтения из файла - это только начальная стадия более широкой задачи, которую я должен выполнить.
#include <mpi.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
struct Pixel
{
int id;
int x;
int y;
float rgb[3];
};
int main(int argc, char *argv[])
{
int namelen, numprocs, myid;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name(processor_name, &namelen);
if (myid == 0)
{
FILE* file = fopen("pixel.txt", "r");
//Pixel arguments
int id, x, y;
float rgb1;
float rgb2;
float rgb3;
int numOfPixelsInFile = 0;
fscanf(file, "%d", &numOfPixelsInFile);
printf("Num of pixels: %d\n", numOfPixelsInFile);
for (int i = 0; i < numOfPixelsInFile; i++)
{
fscanf(file, "%d %d %d %e %e %e", &id,
&x, &y, &rgb1, &rgb2, &rgb3);
printf("%d %d %d %e %e %e\n", id, x, y, rgb1, rgb2, rgb3);
}
fclose(file);
}
else
{
}
MPI_Finalize();
return 0;
}