GPU 上的 foreach doparallel

911*_*303 4 foreach gpu r 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()
    }
Run Code Online (Sandbox Code Playgroud)

现在它在 CPU 中使用 4 个内核,因此使用此代码编写所需的时间非常少。但我想要使用 GPU 进行 foreach-doparallel。是否有任何方法可以在 GPU 上处理foreach doParallel循环。gputools,gpuR是一些支持 R 的 GPU 包。但它们主要用于数学计算,如 gpuMatMult()、gpuMatrix() 等。我正在寻找在 GPU 上运行循环。任何帮助或指导都会很棒。

Ral*_*ner 5

使用foreach或类似工具进行并行化之所以有效,是因为您有多个 CPU(或具有多个内核的 CPU),它们可以同时处理多个任务。GPU 也有多个内核,但这些内核已经用于并行处理单个任务。所以如果你想进一步并行化,你将需要多个 GPU。

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

另外:文件 IO 将始终通过 CPU。