gpt4 book ai didi

c++ - 将 MPI 与线程一起使用的正确方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:04 24 4
gpt4 key购买 nike

我有一段这样的代码,运行在 4 个 MPI 进程上。

for (i=0;i<niter;i++){
//.. do something with temprs

memcpy(rs, temprs,..) // copy temprs content to rs
MPI_Gather(rs,...0...); //gather result to 0
if (mpiRank == 0) writeToDisk(rs);
}

我想将最后 2 行代码放入函数 comm_and_save 中,然后对其进行线程化,以便它可以与其余代码并行运行,如下所示:

boost::thread t1;

for (i=0;i<niter;i++){
//.. do something with temprs

t1.join(); // make sure previous comm_and_save done
memcpy(rs, temprs,..) // copy temprs content to rs
t1 = boost::thread( comm_and_save, rs );
}

但是,代码有时会运行,有时会挂起,有时会抛出一些错误:

local QP operation err (QPN 5a0407, WQE @ 00000f02, CQN 280084, index 100677)
[ 0] 005a0407
[ 4] 00000000
[ 8] 00000000
[ c] 00000000
[10] 0270c84f
[14] 00000000
[18] 00000f02
[1c] ff100000

请指教我哪里做错了谢谢

最佳答案

使用MPI_Init_thread: http://www.mpi-forum.org/docs/mpi-20-html/node165.htm

并检查返回状态:线程支持的可用级别

干杯。

关于c++ - 将 MPI 与线程一起使用的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com