R的革命

Fed*_*rgi 5 r mathematical-packages

自从最新的Ubuntu版本(karmic koala)以来,我注意到内部R包在启动REvolution包时做广告.它似乎是用于高性能矩阵计算的库集合.而且它显然确实有效.例如,在带有REvolution的矩阵转置上:

> system.time(t(matrix(rnorm(10000000),ncol=1000)))
   user  system elapsed 
  1.280   0.150   1.556 
Run Code Online (Sandbox Code Playgroud)

没有革命:

> system.time(t(matrix(rnorm(10000000),ncol=1000)))
   user  system elapsed 
  1.320   0.170   1.725 
Run Code Online (Sandbox Code Playgroud)

有人用吗?它真的有效吗?哪种具体类型的计算有所改进?如何?有什么缺点?

谢谢 :-)

Dir*_*tel 11

是的,在多核计算机上,实现BLAS的英特尔MKL库 - 由软件包提供并由软件包revolution-mkl打开r-revolution-revobase,可以并行处理线性代数问题,你应该看到只使用它的基本情况有所不同libblas*包.

但是,你上面的例子并不那么重要,我经常这样做

 mean(replicate(N, system.time( someStuffHere() )["elapsed"]), trim=0.05)
Run Code Online (Sandbox Code Playgroud)

计算多次复制的修剪均值.

更重要的是,请注意您的示例包括RNG在i)昂贵的时间中绘制,以及ii)对所使用的方法不变,因此您应该在外部生成system.time().

除了MKL之外,revolution-r还引入了一些可用于并行执行的CRAN的REvolution创作包.

(免责声明:我帮助REvo将其整合到Ubuntu 9.10中)