Мне просто интересно, возможно ли это, и есть ли у кого-нибудь пример использования MPI_Op_create для создания операции с функцией, которая имеет много функций gsl и / или внутри нее, чтобы передать еекоманда mpi_reduce.В моей ситуации порядок не имеет значения, но serial и Openmp слишком медленны для того, что я хочу сделать, поэтому я хочу попробовать преобразовать его в mpi.
вместо стандартного примера C
void addem ( int *, int *, int *, MPI_Datatype * );
void addem(int *invec, int *inoutvec, int *len, MPI_Datatype *dtype)
{
int i;
for ( i=0; i<*len; i++ )
inoutvec[i] += invec[i];
}
, который затем передается в
MPI_Op_create ((MPI_User_function *) addem, 1, & op);
я бы изменил это на нечто подобное, но гораздо более сложное, чем это
void addgsl(gsl_vector* vec,gsl matrix* mat, int num,.....,MPI_Datatype *dtype)
for (int i=0; i <num; i++) {
//some complicated boost or gsl mathematical formula here
}