R中带R代码的简单OpenCL示例?

Xu *_*ang 8 r opencl

是否可以使用OpenCL但使用R代码?我仍然不太了解OpenCL和GPU编程.例如,假设我有以下R代码:

aaa <- function(x) mean(rnorm(1000000))

sapply(1:10, aaa)
Run Code Online (Sandbox Code Playgroud)

我喜欢我可以mclapply用作替代品lapply.有没有办法为OpenCL做到这一点?或者使用OpenCL作为后端mclapply?我猜这是不可能的,因为我找不到一个例子,所以我有两个问题:

  1. 这可能aaa吗?如果可以的话,你能用上面的函数给出一个完整的例子吗?
  2. 如果这是不可能的,你能解释一下原因吗?我对GPU编程知之甚少.我像CPU那样查看GPU,为什么我不能并行运行R代码?

Dea*_*gor 2

这是不可能的,因为 GPU 的工作方式与 CPU 不同,这意味着您无法向它们提供与 CPU 相同的指令。

Nvidia 通过这段视频展示了精彩的表演,描述了 CPU 和 GPU 处理之间的差异。本质上的区别在于 GPU 通常比 CPU 拥有更多数量级的内核。

您的示例可以扩展到 GPU 代码,因为它是高度并行的。

这是一些创建随机数的代码(尽管它们不是正态分布的)http://cas.ee.ic.ac.uk/people/dt10/research/rngs-gpu-mwc64x.html

创建随机数后,您可以将它们分成块,然后并行对每个块求和,然后将块的总和相加以获得总和是否可以在 OpenCL 中并行运行求和计算?

我意识到您的代码将使随机数向量及其总和以串行和并行方式运行 10 次,但对于 GPU 处理来说,仅仅 10 个任务效率并不高,因为您会让很多核心闲置。