2009-11-17 40 views
5

后,我注意到内部R软件包在启动时发布了REvolution软件包。它似乎是用于高性能矩阵计算的库集合。显然,它似乎确实有效。例如在矩阵转置与革命:自从最新的Ubuntu发行版(karmic考拉)发布R

> system.time(t(matrix(rnorm(10000000),ncol=1000))) 
    user system elapsed 
    1.280 0.150 1.556 

而且没有革命:

> system.time(t(matrix(rnorm(10000000),ncol=1000))) 
    user system elapsed 
    1.320 0.170 1.725 

是使用的人呢?它真的有用吗?它正在改进哪些特定类型的计算以及如何?有什么缺点?

感谢:-)

+0

你似乎有两次“没有”的情况。 – 2009-11-17 14:58:42

回答

10

是的,在多核计算机上,实现BLAS的 - 由包revolution-mkl提供并由包r-revolution-revobase打开的英特尔MKL库将为线性代数问题并行工作,您应该看到与只使用libblas *包的基本案例。

但是,你上面的例子不是显著,我经常做这样的事情

mean(replicate(N, system.time(someStuffHere())["elapsed"]), trim=0.05) 

来计算截尾平均超过了许多重复的。

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

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

(声明:我把这个共同的Ubuntu 9帮助REVO。10)

+0

谢谢,还有关于计时的提示:-) – 2009-11-17 16:55:29

+0

我在Ubuntu 13.04上安装了革命性的r,并且基于基准2.5脚本,安装后性能完全没有变化。我想知道是否有问题。请看这个问题:http://askubuntu.com/questions/297968/how-to-make-revobase-package-work-in-r-3-0-1 – qed 2013-08-24 11:14:04

+0

现在我已经在R3上使用了基准脚本.0.1和R2.15,带或不带旋转r,结果几乎相同。有人可以证实这一点吗? – qed 2013-08-24 11:31:30

4

有关更多信息,请参见本blog post从革命。 REvolution R 3.0应该从CRAN与R-2.9.2 100%兼容。 基本上,他们使用多线程,高性能线性代数库和优化编译器。 革命增强功能包括:优化以利用处理器高速缓存,矢量指令和多线程(Intel Math Kernel Library - MKL)和

  • 优化编译器和运行时库的优点

    • 高性能数学库。

    REvolution网页上有一些基准:REvolution R PerformanceSimple Benchmarks

    虽然他们已经下OSS许可证(foreachiteratorsdoSNOWdoMC)贡献了几个有趣的扩展到R社会,MKL扩展是专有的。

    就我个人而言,我已切换到(CRAN)R 2.10.0以拥有最新的R功能。

  • 4

    只是为了重申Dirk提到的关于时机的问题 - 在你的情况下,几乎所有的时间都在构建矩阵。看看会发生什么(我的系统,在这里我没有革命的),当我抽出它的计时功能外:

    > system.time(t(matrix(rnorm(10000000),ncol=1000))) 
        user system elapsed 
        2.256 0.317 2.576 
    
    > mt <- matrix(rnorm(10000000),ncol=1000) 
    > system.time(t(mt)) 
        user system elapsed 
        0.137 0.070 0.204 
    

    换句话说,超过90%的时间都花在构建矩阵中,在10 %转换它。