GPU 上的 foreach doparallel
foreach doparallel on GPU
我有这段代码可以并行写入我的结果。我在 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 个内核,因此使用此 code.But 写入所需的时间非常少,我希望使用 GPU foreach-doparallel。有没有什么方法可以在 GPU 上处理 foreach doParallel 循环。 gputools,gpuR 是一些支持 R 包的 GPU。但它们主要用于 gpuMatMult()、gpuMatrix() 等数学计算。我正在寻找 运行 GPU 上的循环。任何帮助或指导都会很棒。
使用 foreach
或类似工具进行并行化是可行的,因为您有多个 CPU(或具有多个内核的 CPU),它们可以同时处理多个任务。 GPU 也有多个内核,但这些内核已用于并行处理单个任务。因此,如果您想进一步并行化,您将需要 多个 GPU。
但是,请记住,GPU 仅在特定类型的应用程序中比 CPUs 更快。大型矩阵的矩阵运算就是一个典型的例子!有关一个特定示例的最近比较,请参阅性能部分 here。因此,考虑 GPU 是否适合您可能是有意义的。
此外:文件 IO 总是 通过 CPU。
我有这段代码可以并行写入我的结果。我在 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 个内核,因此使用此 code.But 写入所需的时间非常少,我希望使用 GPU foreach-doparallel。有没有什么方法可以在 GPU 上处理 foreach doParallel 循环。 gputools,gpuR 是一些支持 R 包的 GPU。但它们主要用于 gpuMatMult()、gpuMatrix() 等数学计算。我正在寻找 运行 GPU 上的循环。任何帮助或指导都会很棒。
使用 foreach
或类似工具进行并行化是可行的,因为您有多个 CPU(或具有多个内核的 CPU),它们可以同时处理多个任务。 GPU 也有多个内核,但这些内核已用于并行处理单个任务。因此,如果您想进一步并行化,您将需要 多个 GPU。
但是,请记住,GPU 仅在特定类型的应用程序中比 CPUs 更快。大型矩阵的矩阵运算就是一个典型的例子!有关一个特定示例的最近比较,请参阅性能部分 here。因此,考虑 GPU 是否适合您可能是有意义的。
此外:文件 IO 总是 通过 CPU。