запись сложного вектора с использованием MPI_FILE_WRITE_ALL - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь распараллелить свой код и записать сложный вектор в двоичный файл с помощью 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?

Спасибо

...