加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 具有多个Pthread的MPI

发布时间:2020-12-16 10:12:47 所属栏目:百科 来源:网络整理
导读:我正在使用以下代码段来初始化多个线程的mpi库.但是我总是得到以下输出,说明此MPI实现不支持MPI_THREAD_MULTIPLE. MPI_Init_thread(argc,argv,MPI_THREAD_MULTIPLE,provided); if(provided != MPI_THREAD_MULTIPLE) { fprintf(stderr,"This MPI implementati
我正在使用以下代码段来初始化多个线程的mpi库.但是我总是得到以下输出,说明此MPI实现不支持MPI_THREAD_MULTIPLE.

MPI_Init_thread(&argc,&argv,MPI_THREAD_MULTIPLE,&provided); 
if(provided != MPI_THREAD_MULTIPLE) 
{
   fprintf(stderr,"This MPI implementation does not support MPI_THREAD_MULTIPLE.n"
}

在做

mpiexec --version and ompi_info

我得到这个输出:mpiexec(OpenRTE)1.4.3和Open MPI:1.4.3

我使用mpicc mpi_hello.c编译,其中c文件包含上面的代码部分.我的mpi库不支持多线程的任何想法?
我想从不同的线程发送和接收mpi消息,而不是进程.

谢谢

解决方法

您没有指定您正在使用的平台或分发或构建.您使用的库很可能没有配置为多线程使用.从源代码构建时,您需要使用以下内容构建它:

$./configure --enable-mpi-thread-multiple

您可以通过运行来测试二进制文件具有哪些功能:

$ompi_info | grep -i thread
          Thread support: posix (mpi: yes,progress: no)

如果不支持,您可能需要build from source.

有关重要细节,请参阅OpenMPI documentation on MPI_Init_Thread,包括有关在此模式下运行的限制的信息:

Note that MPI_THREAD_MULTIPLE support is only lightly tested. It likely does not work for thread-intensive applications. Also note that only the MPI point-to-point communication functions for the BTL’s listed below are considered thread safe. Other support functions (e.g.,MPI attributes) have not been certified as safe when simultaneously used by multiple threads.

请注意,您报告的版本(1.4)也很旧;目前的稳定版本是v1.10.

如果你想使用多个线程,你可能想重新考虑你的设计;有几个线程框架(例如Threaded Building Blocks)比MPI更合适,MPI主要用于集群应用程序.一些替代品:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读