почему пересчет MPI_Scatterv является фиксированным int, а sendcount — массивом?

это краткий обзор MPI_Scatterv()

    int MPI_Scatterv(const void *sendbuf, const int *sendcounts, const int *displs,
MPI_Datatype sendtype, void *recvbuf, int recvcount,
MPI_Datatype recvtype,
int root, MPI_Comm comm)

Я не могу понять, как это работает. ЕСЛИ MPI_Scatterv() отправляет элементы разных размеров, которые хранятся в *sendcounts тогда почему recvcount фиксированное целое число, а не массив размеров куска, а?

а также, поскольку это фиксированное целое число, каким должно быть значение. должно ли оно быть равным максимальному значению sendcount массив? Например, если у меня есть

   int sendcount[4] = {1,5,10,8};

должен recvcount быть равным 10?

0

Решение

sendcounts укажите фактические размеры чанка для отправки. recvcount определяет размер локального приемного буфера, например, recvcount=sendcounts[rank],

В деталях это немного сложнее: размер буфера приема должен быть как минимум достаточно большим, чтобы хранить порцию для данного ранга. Если задействованы различные типы, также имеют значение экстенты типа.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]