c++ - 将 MPI_Op_create 与外部库函数(例如 boost 或 GS​​L)结合使用

标签 c++ c boost mpi gsl

我只是想知道这是否可能,如果可能的话,是否有人有一个使用 MPI_Op_create 创建一个 Op 的示例,该 Op 的函数内部有许多 gsl 和/或 boost 函数,以将其传递给mpi_reduce 命令。在我的情况下,顺序并不重要,但串行和 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
                             }

最佳答案

用户定义的操作可以执行的操作没有任何限制:它们只是从输入中获得一些元素,并期望计算结果。用户操作的唯一要求是它们是关联的。也无法预测函数将获取多少个元素:这取决于 MPI 实现,并由 len 参数指定。

关于c++ - 将 MPI_Op_create 与外部库函数(例如 boost 或 GS​​L)结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834771/

相关文章:

C++,boost asio,慢读

c++ - C++中所有非成员函数指针的大小是否相同

复制从文件中读取的字符串并将其存储在二维字符串数组中

c - 编译器编译内核时使用哪个头文件路径?

c - pthread_create 上的段错误

c++ - 有谁见过 2-Sat 的实现吗

c++ - 以编程方式使 QToolButton 与 Qt Designer 中的相同

c++ - 使用 unix 套接字的同步 boost asio 中的延迟/延迟

c++ - 当我在 visual c++ studio 2010 中运行应用程序时,为什么光标会转到最后一个文本框?

c++ - 插入 unordered_map 时没有匹配函数