OpenCL:它与OpenMP配合得很好,可以将其他语言连接到它等等

10 openmp opencl

几天前OpenCL的1.0规范刚刚问世(Spec就在这里),我刚刚开始阅读它.我想知道它是否与OpenMP(规范)等其他高性能多处理API一起运行良好,我想知道我应该学到什么.所以,这是我的基本问题:

  1. 如果我已经在使用OpenMP,那么会破坏OpenCL,反之亦然?
  2. OpenCL比OpenMP更强大吗?或者他们打算互补?
  3. 是否有将OpenCL程序连接到标准C99程序(或任何其他语言)的标准方法?它是什么?
  4. 有谁知道是否有人正在撰写OpenCL书籍?我正在阅读规范,但我发现书籍更有帮助.

小智 7

OpenMP和OpenCL是截然不同的,但可以一起工作.他们俩都不应该"打破"另一个.

为了论证,我们假设在最小化对现有代码库的更改与性能或计算能力之间存在权衡.OMP是"容易的",因为你可以"神奇地"将它应用于一个或两个快速实用的令人尴尬的并行问题.

OpenCL引入了超越典型操作系统线程模型的全新高级概念.Khronos可能不想大声说出来,但它的起源是在NVIDIA的CUDA中.如果您想了解它今天的工作原理,请下载CUDA SDK并开始播放.如果您没有任何NVIDIA GPU,请不要担心,有GPU仿真器软件选项.OpenCL是GPU的一个方便的抽象,应该适用于CPU,DSP,"加速器"(Khronos的IBM的CellBE和可能是英特尔的Larrabee的昵称).

OpenCL不应该"直接用C99编写".它被称为C99扩展,因为它的语法与C99类似/相同,带有一些新的关键字.您无法从内核调用libc(或任何其他库).

您可以使用两者,但理论上,如果您愿意移植代码,OpenCL应该"更好"(因为它可以移植到更多的计算设备).您不能在OpenCL内核中使用OpenMP pragma.

也可以看看:


PPS*_*PPS 0

  1. OpenCL 应该直接用 C99 编写吗?无论如何,现在有可用的头文件。