关于使R代码使用多个处理器的任何建议?


28

我有R脚本,用于从不同文件中读取大量的CSV数据,然后执行诸如svm的机器学习任务以进行分类。
是否有任何库可用于R的服务器上的多个内核 ?
或者
什么是最合适的方法?


我只是看不到导入数据和运行SVM与这个问题有什么关系。这就是为什么我认为这更多是一个SO问题。但是我认为外部参照是一个很好的长期解决方案,因为它是R ...
Shane

3
我在这里进行此类问答并没有问题。R不是一种主流语言(例如Python或Java),量子用户自然会说:“哦,这是一个通用的编程问题,所以我应该去StackOverflow或类似的网站,问这个问题或在那儿寻找解决方案”。实际上,对于R邮件列表或群组站点,这更是一个问题。为了服务那些想学习R的新兴分析师,我们也很高兴在这里也能给出答案。
保罗

2
投票保持开放;与统计学家非常相关,因为我们的问题可以或不能分解为平行流的方式与所要提出的问题有关。
russellpierce

@chl:感谢您提出来。实际上,此线程出现后不久,我就从该线程中检出了所有非商业引用,但找不到在Win 7 x64上有效的任何东西。
ub

1
更糟糕的是,我提出的解决方案与win 7一起使用,并且是非商业性的(有关详细信息,请参阅我链接到的帖子)。它与商业环境捆绑在一起,但可以与之分离(如我的文章所示)。代码本身就是GPL ...
Tal Galili 2010年

Answers:


16

如果是在Linux上,那么最简单的就是multicore。除此之外,我建议您看一下MPI(尤其是对于Snow软件包)。

更笼统地说,看一下:

  1. 高性能计算查看关于CRAN。
  2. “使用R进行并行计算的最新技术”

最后,我建议使用foreach包来提取代码中的并行后端。从长远来看,这将使其更加有用。


我主要使用多核,但由于其容错性和干净的接口,我仍然比降雪和Rmpi更喜欢降雪。

@mbq +1降雪-进一步抽象雪,并使使用R的并行计算非常简单。
沙皮狗” 2010年


5

谢恩是正确的。无论多核RMPI都是赢家。

高性能计算CRAN任务视图中,该主题的涵盖范围稍广。这也链接到JSS 近期发表的有关使用R进行并行计算的调查文章。

最后,我不时提供一些有关R的HPC入门教程的动手实例和技巧-请参阅我的演示文稿页面,获取上周useR的最新副本。


好吧,需要互斥锁。当我对您的答案发表评论时,我只看到了第一个(原始)版本,并且构想得很好,我可能会扩展mc和Rmpi。然后你做到了,我看起来像个模仿者。这就是生活。
德克·埃德比布特

另一方面,我的答案来自过去阅读过您的论文/演讲。所以我想我也要抄袭你。
Shane

5

我注意到以前的答案缺少一些通用的HPC注意事项。
首先,这两个软件包都不会让您并行运行一个 SVM。因此,您可以加快参数优化或交叉验证的速度,但仍然必须为此编写自己的函数。或者,当然可以在不同情况下并行运行该作业。
第二个问题是记忆。如果要将计算分散到几台物理计算机上,则没有免费的午餐,您必须复制数据-在这里必须考虑在计算机之间预先分配数据副本以节省一些通信是否有意义。另一方面,如果您希望在一台计算机上使用多个内核,则比多内核特别合适,因为多内核使所有子进程都可以访问父进程的内存,因此可以节省一些时间和大量的内存空间。


1
+1关于如何解决交叉验证问题的要点。
Shane

顺便说一下,最近有一些工作(2013年),即通过dCSE为单个SVM支持HPC(hector.ac.uk/cse/distributedcse/reports/sprint03/…)。有一个包sprint用一个函数R psvm,但他们背后紧跟R 3.0的变化和新的CRAN提交指南一点点,所以当前下载既不是可在CRAN或者与R 3.0完全兼容。你的旅费可能会改变。
明亮的星星

3

Shane和Dirk的回应都是当场。

尽管如此,您可能想看看商业版本的R,称为Revolution R,该版本旨在处理大型数据集并在多个内核上运行。该软件对学者免费(我不知道这可能是您的情况)


5
我有些不同意。Revolution在获得思想分享方面做得很好(在您的帖子中可以证明),但是在目前的产品中,使用普通的R(至少在Linux上)是无法获得的。英特尔MKL,可以,但是您可以获取Goto Blas。在Windows上,它们提供了doSMP,这可以在多核无法在其中构建的情况下提供帮助。
德克·埃德比布特

2
但是,当然,如果OPS在Windows环境中工作,doSMP正是他们所希望的。
russellpierce
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.