Я хочу использовать MPI_Allreduce
для очень длинного массива в качестве следующей демонстрации.
long long n = 1 << 10;
double* array = new double[n];
memset(array, 1234.5678, n * sizeof(double));
MPI_Allreduce(MPI_IN_PLACE, array, n, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
Однако я проверил официальную документацию и подробности об API следующим образом. Мы видим, что мы можем использовать только целое число, чтобы указать общее количество элементов в буфере отправки. Что если я хочу выполнить этот API на очень длинном массиве? Нужно ли разбивать мой массив на множество мелких частей, а затем выполнять эту коллективную операцию?
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count,
MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)