【问题标题】:foreach doparallel on GPUGPU上的foreach多并行
【发布时间】:2018-11-30 08:52:56
【问题描述】:

我有这段代码用于并行编写我的结果。我在 R 中使用 foreachdoParallel 库。

    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 上运行循环。任何帮助或指导都会很棒。

【问题讨论】:

    标签: r foreach gpu doparallel


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢@Ralf Stubner。我只有一个多核 GPU。所以我不能使用GPU进行foreach并行。对吗?
    • @Aswathy 是的,没错。
    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 2017-06-16
    • 2011-07-15
    • 1970-01-01
    • 2018-06-01
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多