R包自动使用几个核心?

我已经注意到R在执行我的一个程序时只使用一个核心,这需要大量的计算。 我想利用我的多核处理器来使我的程序运行得更快。 其实我还没有深入调查这个问题,但是我希望能从你的意见中受益,因为我对计算机科学没有很好的知识,而且对于这个问题我也很难获得容易理解的信息。

是否有一个允许R在需要时自动使用多个内核的软件包?

我想这不是那么简单。

R只能在附加软件包的帮助下使用多个内核,并且只能用于某些types的操作。 这些选项在CRAN上的高性能计算任务视图中详细讨论

更新:从R版本2.14.0附加软件包不一定是必需的,因为包含并行软件包作为R随附的推荐软件包。 并行软件包含来自多核积雪软件包的function,基本上保持不变。

利用多处理器最简单的方法是包含函数mclapply()的multicore包。 mclapply()是lapply()的多核版本。 因此,任何可以使用lapply()的进程都可以轻松转换为mclapply()进程。 但是,多核在Windows上不起作用。 我写了一篇关于去年的博客文章,可能会有所帮助。 Revolution Analytics创build的软件包doSMP不是R的multithreading版本。它实际上是Windows版本的多核心。

如果你的工作是平行的 ,那么使用lapply()types的结构是个好主意。 这会让你轻松地进入mclapply(),甚至使用相同的抽象分布式计算。

对于并不“尴尬的并行”的操作来说,事情会变得更加困难。

[编辑]

作为一个侧面说明,Rstudio作为R的前端越来越受欢迎。我喜欢Rstudio并每天使用它。 不过需要注意的是,Rstudio对于Multicore并不是很好(至less在2011年10月份,我知道RStudio团队正在解决这个问题)。 这是因为Rstudio在幕后做了一些分叉,这些分叉与Multicore的分叉尝试相冲突。 所以,如果您需要多核,您可以在Rstuido中编写代码,但可以在简单的简R会话中运行它。

在这个问题上你总是得到很短的答案。 根据我的最简单的解决scheme是基于雪的包裹降雪 。 也就是说,在具有多个核心的Windows单台计算机上。 在这里也可以参考Knaus等人的一个简单的例子。 降雪是围绕雪包的封装,允许您使用一些命令设置多核。 这绝对比大多数其他软件包(我没有尝试所有这些)麻烦。

在旁注中,确实只有less数任务可以并行化,因为非常简单的原因,在多核计算有意义之前,必须能够分解任务。 apply系列显然是一个合理的select:多重和独立的计算,这是多核使用的关键。 其他任何东西都不是那么容易多彩的。

另请阅读关于sfApply和自定义函数的讨论。

Microsoft R Open包含multithreadingmath库以提高R的性能。它适用于Windows / Unix / Mac所有操作系统types。 它是开源的,如果您有任何现有的R(来自CRAN)安装,可以安装在一个单独的目录中。 你也可以使用stream行的IDE Rstudio。从一开始,R被devise为一次只能使用一个线程(处理器)。 即使在今天,R仍然以这种方式工作,除非与multithreadingBLAS / LAPACK库链接。

今天的多核机器提供了并行处理能力。 为了利用这一点,Microsoft R Open包含multithreadingmath库。 这些库使得如此多的通用R操作(诸如matrix乘/逆,matrix分解和一些更高级别的matrix操作)可以并行计算,并使用所有可用的处理能力来减less计算时间。

请检查以下链接:

https://mran.revolutionanalytics.com/rro/#about-rro

http://www.r-bloggers.com/using-microsoft-r-open-with-rstudio/

正如David Heffernan所说,看看革命分析博客。 但是你应该知道大多数软件包都是用于Linux的。 所以,如果你使用Windows,将会更困难。 无论如何,看看这些网站:

革命 。 在这里你可以find关于R的并行化的讲座。讲座其实非常好,但正如我所说的,大部分技巧都是针对Linux的。

这个线程在这里在Stackoverflow将讨论在Windows中的一些实现。