MVAPICH2多线程支持问题

MVAPICH2默认单线程,可通过mpirun设置MV2_ENABLE_AFFINITY为0启用多线程,用MPI_Init_thread替换MPI_Init。在代码中检查MPI_THREAD_MULTIPLE支持。GPU间通信,设置MV2_USE_CUDA=1,设备内存可直接通信,配置文件中相应选项调整。
摘要由CSDN通过智能技术生成

MVAPICH2为了优化性能,默认的情况是将进程绑定到处理器的。因此默认是只支持单线程的,如果要运行MPI多线程程序,可以通过以下方式运行多线程:

$ mpirun  -np 2 –env MV2_ENABLE_AFFINITY  0  ./mpi app

(或者:$ mpirun_rsh  -np 2 MV2_ENABLE_AFFINITY =0  ./mpi app)

当然在程序mpiapp的代码中MPI初始化函数MPI_Init(),要用函数MPI_Init_thread()代替,例如:

int provided;   

MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); 

if(provided != MPI_THREAD_MULTIPLE)        

{            

       printf("MPI do not Support Multiple thread\n");          

       MPI_Abort(MPI_COMM_WORLD,-1);        

}

环境配置文件:将配置文件中MV2_ENABLE_AFFINITY置0;

         系统的配置文件在:/etc/mvapich2.conf;

         用户的配置文件在:~/.mvapich2.conf;

 

 

GPU内存间的MPI通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值