我是GPU编程的新手,我有没有显卡的笔记本电脑,我想在intel openCL上开发矩阵乘法程序,并使用MPI实现这个应用程序..
可以发布任何指南和有用的链接。
我对MPI的事情感到困惑,我们是否必须为MPI编写代码,或者我们是否必须使用一些开发的MPI来运行我们的应用程序?
这是我想做的项目提案
GPU集群计算(C ++,OpenCL和MPI)
研究MPI以解决问题
在一台机器上实施OpenCL应用程序(矩阵乘法/二维图像处理)
使用MPI实施应用程序(例如大型2D图像处理)
答案 0 :(得分:8)
所以要理解的是,MPI和OpenCL用于您的目的是完全正交的。 MPI用于GPU节点之间的通信; OpenCL用于通过使用GPU(或多个CPU内核)加速单个节点上的本地计算。对于任何这些问题,您首先要编写代码的串行C ++版本。下一步是(以任何顺序)处理单个节点的OpenCL实现,并处理分解问题的MPI版本(不想要用户主从任何上面列出的问题)到多个进程,每个进程执行其计算的本地部分,这有助于全局解决方案。完成这两个部分后,您将合并这两个部分,并使用分布式内存(MPI部分)GPU(OpenCL部分)版本的代码来解决此问题。
当然,这并不是那么容易,将两者结合起来会花费相当多的工作,但这是记住的基本方法。从一个问题开始,让它在C ++中的单个处理器上运行,然后尝试使用其中一个。不要试图一次完成所有事情,否则你永远无法到达任何地方。
对于像矩阵乘法这样的问题,互联网上有许多GPU和MPI实现的例子可供学习。
答案 1 :(得分:2)
简化:
MPI是一个用于通信过程的库,也是一个在集群中运行应用程序的平台。您编写了一个使用MPI库的程序,然后该程序应该使用MPI执行。 MPI在集群中将该应用程序分叉N次,并允许将该应用程序实例与消息进行通信。
制作实例的任务(如果它们是相同或不同的工作人员)和拓扑结构取决于您。
我认为有三种使用方法(OpenCL和MPI):