我有一个用c ++编写的实用程序并且使用MPICH2它会做一些繁重的计算,我对它的性能不满意,并且有很多改进的范围。
首先MPICH2只使用exes,所以我必须将我的数据写入文件并将该文件作为参数传递给该实用程序,该实用程序再次读取所有数据并将输出写回文件。 如果我能在dll中使用它,我可以节省大量时间传递数据。此外,如果我能以某种方式在GPU上运行它,这将提升(不太确定)。
我想知道将实用程序代码转换为OpenCL需要付出多少努力,或者是否有任何工具可以执行60-70%的转换任务。
答案 0 :(得分:2)
我最好的猜测是,将代码转换为OpenCL需要尽可能多的工作,因为它可以将类似的串行代码转换为并行代码。我知道没有工具可以自动化将MPI代码转换为OpenCL代码的过程。我非常有兴趣向其他人学习任何这样的工具。
已经完成了一些关于在GPU上运行MPI的研究和结果。我的印象是,任何这项工作仍然是研究级的,可能既不可靠也不可移植。
最后,虽然它无法帮助您使用GPU,但为什么不用MPI代码纠正错误?我有点不清楚,但似乎其中一个问题是你的MPI代码写入和读取文件作为传递数据的方式。这不是MPI计划的必要特征,可以修改