MVAPICH2多线程支持问题
来源:互联网 发布:python公约数 编辑:程序博客网 时间:2024/04/19 09:30
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通信
一般在没有CUDA的支持下,设备内存间的MPI通信如下:
cudaMemcpy(host buf, device buf, size, cudaMemcpyDeviceToDevice);
MPI_Send(host buf, size, MPI CHAR, 1, 100, MPI COMM WORLD, req);
若要从设备到设备内存,设备内存到主机内存,主机内存到设备内存的MPI通信,
则设置环境变量 MV2 USE CUDA 为1 (系统默认是0,即不支持设备间内存通信),设备间可以直接通信,如下:
MPI_Send(device buf, size, MPI CHAR, 1, 100, MPI COMM WORLD, req);
$ mpirun -np 2 –env MV2_USE_CUDA 1 ./mpi app
(或者$ mpirun_rsh -np 2 MV2_USE_CUDA =1 ./mpi app)
环境配置文件:将配置文件中MV2_USE_CUDA置1;
系统的配置文件在:/etc/mvapich2.conf;
用户的配置文件在:~/.mvapich2.conf;
- MVAPICH2多线程支持问题
- Setjmp的支持多线程问题
- GM支持多线程问题排除
- MVAPICH2使用小记
- linux 下mysql多线程支持问题
- mvapich2 INTEL编译器优化下编译参数
- VB也是支持多线程
- 判断是否支持多线程
- 支持多线程的属性
- 循环队列,支持多线程
- wxPython多线程支持
- java多线程同步支持
- HttpClient 支持多线程
- GDB 支持多线程调试
- gcc多线程支持-fopenmp
- MATLAB是否支持多线程
- 模板队列-支持多线程
- Access数据库的密码问题及对多线程支持的研究
- object-c 基础小结
- 烤馍片(KMP) 字符串遍历
- primer 练习题1033
- 等待与你相遇
- Cent os 6.4 Cobbler搭建
- MVAPICH2多线程支持问题
- SpringMVC映射Date类型
- log4j中logger标签的用途
- oracle编程入门笔记2015-01-22--解释计划
- Map的遍历输出和Collections以及Properties
- [解决方法]回收站东西删不掉
- stl 学习小结
- ACM100题-002三个水杯
- Spring定时任务的几种实现