OpenCL有什么好的工作好处

Dan*_*iel 6 scientific-computing opencl

首先:

  • 我很清楚OpenCL并没有神奇地让一切变得更快
  • 我很清楚OpenCL有局限性

所以现在我的问题是,我习惯于使用编程进行不同的科学计算.在复杂性和计算次数方面,我使用的一些东西非常紧张.所以我想知道,也许我可以使用OpenCL加快速度.

所以,我希望听到你们所有人的回答是以下一些[链接奖励]:

*什么样的计算/算法/一般问题适合OpenCL

*确定某些特定代码是否会因迁移到OpenCL而受益的一般原则是什么?

问候

Nat*_*han 9

我认为这是一个很好的问题,而且我正在努力为自己的研究工作.

目前,在GPU可以做什么方面存在很大的局限性,因为它们需要单独的线程在不同的数据集上执行完全相同的代码,即问题/算法必须是"数据并行".显然,数据并行问题包括蒙特卡罗模拟(其中许多MC模拟并行执行),图像处理和不太明显的分子动力学模拟.数值积分(蒙特卡罗或其他)是另一种科学应用程序,可以轻松移植到GPU上运行.

另一个主要限制是每个线程的内存非常有限,因此为了在GPU上有效地执行,算法必须具有高算术强度.算法成为在GPU上运行的候选算法的必要但不充分的条件是在CPU上算法必须是强大的CPU绑定而不是内存绑定.

我的观点是,随着时间的推移,越来越多的问题将被解决,以便使用这种范例可以解决这些问题,因为有很大的性能提升,但低悬的果实显然是数据并行问题.在我看来,大规模多核编程在未来十年将在科学界越来越重要和普遍.

我已经玩了一下这个,并设法将回溯问题转换为适当的格式,以便在GPU上执行(使用CUDA).仅供参考,我在演讲中对此进行了描述:http://lattice.complex.unimelb.edu.au/home/sites/default/files/mydocuments/clisby_cuda0509.pdf