Я пытаюсь распараллелить свой код и записать сложный вектор в двоичный файл с помощью mpi_file_write_all. Мой код не смог запустить MPI_File_Write_all, когда размер вектора равен N = 1024, но успешно работает, когда размер меньше, например, N = 512.
Используя MPI_Error_String,
error = MPI_File_write_all(file, &v[0], 2 * (int)(local_n0*N*N), MPI_DOUBLE, &status);
MPI_Error_string(error, estring, &len);
std::cout << estring << "\n";
где v
- это сложный вектор, объявленный std::vector<std::complex<double>>
и local_n0 = N / total_rank
.
Я получил следующее сообщение об ошибке
MPI_ERR_ARG: invalid argument of some other kind
Я пробовал использовать другие типы данных, такие как MPI_DOUBLE_COMPLEX
, но все равно получил то же сообщение об ошибке.
Как мне правильно записать свой сложный вектор в двоичный файл в среде mpi?
Спасибо