MPI与OpenCL一起使用?

6 mpi opencl

在将我的应用程序划分为各种任务并将其转换为多线程环境时,我已经意识到从根本上说我的基本概念是错误的:OpenCL不适合我需要在我的应用程序中执行的操作,但仅限于对于问题的数学部分.

所以在这一点上我想知道我是否可以使用MPI在不同设备上启动n个线程,然后如果设备有GPU则启动OpenCL内核.

这是常见的事情,还是使用MPI排除OCL,反之亦然?

我的目标是在计算机上运行应用程序并使用连接到它的任何设备(如果存在),以增加计算能力并分享任务.任务本身分为处理数字(非常适合OCL),OGL呈现来自数据处理部分的结果,UI管理和交互以及数据管理(保存,存储,替换).

根据我的理解,MPI无法像OCL那样将线程发送到GPU,但OCL主要用于数学运算,因此如果我的应用程序需要访问网络以检索信息,或者如果它需要,那么它将不会有任何好处.需要使用OGL绘制线程的结果; 在这种情况下,最好的选择是MPI.

任何关于可行选择的建议都将得到更多的赞赏.

sus*_*att 5

这绝对可行(请参阅此问题和答案).所有MPI确实会产生程序的多个实例并处理它们之间的通信.它不关心在每个单独节点上本地执行什么操作.例如,有一次我写了一个MPI程序,其中主程序使用Qt来可视化从工人那里收到的数据.


igo*_*gon 5

MPI和OpenMP是HPC的一种非常标准的混合编程模型.对MPI和OpenCL进行相同的操作没有实际或理论上的限制.

MPI可以处理进程之间的通信,而openCL处理GPU上的计算密集型部分.

通常,只要环境一致(相同的操作系统,相同的库版本,相同的体系结构等),将任何库与MPI一起用作多台机器上的一组不同进程之间的协调语言就没有限制.