在编写openCL代码时,它如何在没有GPU的单核机器上执行?

Ema*_* Ey 4 c parallel-processing raytracing opencl

嘿所有,我目前正在将FORTRAN 77的光线跟踪器移植到C进行研究项目.

移植完要素后,问题是我们如何进行并行化.
在实验室中,我可以访问几个不同的Opteron机器,有2到8个内核,但没有GPU(目前).我们正在运行64b gentoo.

GPGPU版本(非常)是可取的,但项目中只有一个程序员,维护单独的非GPU和GPU版本不是一种选择.
此外,代码将是GPL,并且我们希望看到它被其他可能具有完全不同硬件的人使用.

因此,整个程序必须易于编译/运行,而无需GPU或甚至多核系统.
OpenCl似乎是一个不错的选择,因为它可以在没有GPU的机器上运行,但是这个代码将如何在单核或32b系统上运行?
是否有可能以这样的方式编写代码,以便在没有openCL的情况下轻松编译代码?

tau*_*ran 8

目前有四种主要的OpenCL实现:AMD,nVidia(Cuda),Apple,Intel,很快就会有更多:OpenCL实现.OpenCL不是专门针对GPU计算的语言,它被设计为异构设备的通用计算语言.例如,即使没有GPU和任何非AMD CPU(当然是x86),你也可以使用AMD实现.

是否有可能以这样的方式编写代码,以便在没有openCL的情况下轻松编译代码?

正如你所说这是一个单人项目,我怀疑它是值得的.

这段代码将如何在单核或32b系统上运行?

与任何本机程序一样好.您可以通过OpenCL矢量类型访问SIMD.您可以通过工作组配置处理线程.

但是,不要指望使用相同的内核/工作组设置可以从每台设备中获得100%的性能.可以进行大量特定于设备的调整(OpenCL CPU Tutorial开始).

我会说去OpenCL.它为您的应用程序提供了更多的可能性,并且它的平台是独立的.