使用GPU并行执行foreach循环

5

我有这段代码用于并行写入结果。我正在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上运行循环的方法。任何帮助或指导都将是极好的。
1个回答

5

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

但是,请记住,GPU仅对某些类型的应用程序比CPU快。大矩阵的矩阵运算是一个典型的例子!您可以在这里查看性能部分的最新比较结果here。因此,您可能需要考虑GPU是否是适合您的正确工具。

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


感谢@Ralf Stubner。我只有一张带有多个核心的GPU。所以我不能使用GPU进行foreach并行处理,对吗? - 9113303
@Aswathy 是的,没错。 - Ralf Stubner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接