在GPU上进行foreach doparallel

时间:2018-06-21 06:10:09

标签: r foreach gpu doparallel

我有这段代码可以并行编写结果。我在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 个答案:

答案 0 :(得分:3)

使用foreach或类似工具进行并行化的原因是,您有多个CPU(或具有多个内核的CPU),它们可以一次处理多个任务。 GPU还具有多个内核,但是这些内核已经用于并行处理单个任务。因此,如果要进一步并行化,则需要多个GPU

但是,请记住,仅在某些类型的应用程序中,GPU比CPU更快。大型矩阵的矩阵运算就是一个很好的例子!有关一个特定示例的最新比较,请参见性能部分here。因此,考虑GPU是否是适合您的工具可能对您有意义。

此外:文件IO总是 通过CPU。