GPU上的foreach多并行
Posted
技术标签:
【中文标题】GPU上的foreach多并行【英文标题】:foreach doparallel on GPU 【发布时间】:2018-11-30 08:52:56 【问题描述】:我有这段代码用于并行编写我的结果。我在 R 中使用 foreach 和 doParallel 库。
output_location='/home/Desktop/pp/'
library(foreach)
library(doParallel)
library(data.table)
no_cores <- detectCores()
registerDoParallel(makeCluster(no_cores))
a=Sys.time()
foreach(i=1:100,.packages = c('foreach','doParallel')
,.options.multicore=mcoptions)%dopar%
result<- my_functon(arg1,arg2)
write(result,file=paste(output_location,"out",toString(i),".csv"))
gc()
现在它在 CPU 中使用 4 个内核,因此使用此代码编写所需的时间非常少。但我希望使用 GPU 进行 foreach-doparallel。有什么方法可以在 GPU 上处理 foreach doParallel 循环。 gputools,gpuR 是一些支持 R 的 GPU 包。但它们主要用于数学计算,如 gpuMatMult()、gpuMatrix() 等。我正在寻找在 GPU 上运行循环。任何帮助或指导都会很棒。
【问题讨论】:
【参考方案1】:使用foreach
或类似工具进行并行化是可行的,因为您有多个 CPU(或具有多个内核的 CPU),它们可以一次处理多个任务。 GPU 也有多个内核,但这些内核已经用于并行处理单个任务。因此,如果您想进一步并行化,您将需要多个 GPU。
但是,请记住,GPU 仅在某些类型的应用程序中比 CPU 更快。大矩阵的矩阵运算就是一个很好的例子!请参阅性能部分here,了解最近对一个特定示例的比较。因此,考虑 GPU 是否适合您可能是有意义的。
此外:文件 IO 将始终通过 CPU。
【讨论】:
感谢@Ralf Stubner。我只有一个多核 GPU。所以我不能使用GPU进行foreach并行。对吗? @Aswathy 是的,没错。以上是关于GPU上的foreach多并行的主要内容,如果未能解决你的问题,请参考以下文章
何时使用 Parallel.ForEach,何时使用 PLINQ