我不太清楚这两个怎么放在一起编译,如果将mpi调用也放在cu文件里,就算是通过了编译,生成了exe但是放在mpiexec中运行会自动退出。我也试过将cu的部分生成dll再在cpp中mpi启动后在调用kernel,但是使用mpiexec后,会自动退出,显示说MPI_Finalize()没有启用。期望有高人指点。
看过一个一摸一样的问题。
当时看到的建议是:
用driver api去load module&function,然后cuLaunch
您能说的详细一点吗,不太明白啊,谢谢了,或者告诉我原帖在哪,我自己查看。
找不到那个帖子了。。。
这样吧,创造一个.cu,里面有你的kernel,没有别的东西,用nvcc把它compile成cubin
在MPI的文件中调用cuModuleLoad, cuModuleGetFunction以及cuLaunchKernel来加载并运行cubin中的kernel.
用MPICC来compile那个MPI文件,就可以了。
具体那几个driver API怎么用,可以参照NVIDIA CUDA Library Documentation
或者。。。用mpiexec的时候加一个-localonly
http://forums.nvidia.com/index.php?showtopic=200618
这个 -localonly 的参数是针对某些问题有效,但我和楼主遇到相似的问题,且和他在另一个帖子中有过交流,似乎这个方法还是不行。
请问你有源码吗,我是结合成功了,但是没有具体的例子。有的麻烦你发一下,谢谢你了