我注意到R在执行我的一个程序时只使用一个核心,这需要大量的计算.我想利用我的多核处理器让我的程序运行得更快.我还没有深入调查这个问题,但我很高兴能从你的评论中受益,因为我对计算机科学知之甚少,而且我很难获得有关该主题的易于理解的信息.
是否有一个允许R在需要时自动使用多个内核的软件包?
我想这不是那么简单.
JD *_*ong 33
利用多处理器的最简单方法是multicore包含函数mclapply()的包.mclapply()是lapply()的多核版本.因此,任何可以使用lapply()的进程都可以轻松转换为mclapply()进程.但是,多核不适用于Windows.去年我写了一篇关于这篇文章的博文,可能会有所帮助.Revolution Analytics创建的软件包doSMP不是R的多线程版本.它实际上是多版本的Windows版本.
如果你的工作令人尴尬地平行,那么熟悉lapply()类型的结构是个好主意.这将使您轻松地进入mclapply()甚至使用相同的抽象分布式计算.
对于没有"令人尴尬的并行"的操作,事情变得更加困难.
[编辑]
作为旁注,Rstudio作为R的前端越来越受欢迎.我喜欢Rstudio并且每天都使用它.然而需要注意的是Rstudio与Multicore的搭配并不好(至少截至2011年10月......我明白RStudio团队将会解决这个问题).这是因为Rstudio在幕后做了一些分支,这些分叉与Multicore试图分叉相冲突.因此,如果您需要多核,您可以在Rstuido中编写代码,但在简单的Jane R会话中运行它.
Jor*_*eys 15
在这个问题上,你总能得到非常简短的答案.根据我的说法,最简单的解决方案是降雪,基于雪.也就是说,在具有多个内核的Windows单台计算机上.另见Knaus等人的文章,其中有一个简单的例子.降雪是雪包的包装,允许您使用一些命令设置多核.它绝对比大多数其他软件包更麻烦(我没有尝试所有这些).
在旁注中,确实只有很少的任务可以并行化,原因很简单,你必须能够在多核计算有意义之前分割任务.该apply系列显然是一个合乎逻辑的选择:多重和独立的计算,这对于多核使用至关重要.其他任何东西并不总是那么容易多元化.
另请阅读有关sfApply和自定义函数的讨论.
Microsoft R Open包含多线程数学库,以提高R.It在Windows/Unix/Mac中的所有操作系统类型的性能.它是开源的,如果您有任何现有的R(来自CRAN)安装,可以安装在单独的目录中.你可以使用流行的IDE Rstudio.从一开始,R就被设计为一次只使用一个线程(处理器).即使在今天,除非与多线程BLAS/LAPACK库相关联,否则R会以这种方式工作.
今天的多核机器提供并行处理能力.为了利用这一点,Microsoft R Open包含多线程数学库.这些库使得许多常见的R操作(例如矩阵乘法/逆矩阵,矩阵分解和一些更高级别的矩阵运算)可以并行计算并使用所有可用的处理能力来减少计算时间.
请检查以下链接:
https://mran.revolutionanalytics.com/rro/#about-rro
http://www.r-bloggers.com/using-microsoft-r-open-with-rstudio/