2009-11-17 8 views
5

desde la última versión de Ubuntu (koala kármico), noté que el paquete R interno se anuncia en la puesta en marcha del paquete REvolution. Parece ser una colección de biblioteca para cálculos de matriz de alto rendimiento. Y parece que realmente funciona, aparentemente. Por ejemplo, en una transposición de la matriz con la revolución:REvolution para R

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

Y sin revolución:

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

Hay alguien usando? ¿Realmente está funcionando? ¿Qué tipos específicos de cálculo está mejorando y cómo? Cualquier inconveniente?

Gracias :-)

+0

Parece que tiene el caso "sin" dos veces. –

Respuesta

10

Sí, en una máquina multinúcleo, las bibliotecas Intel MKL que implementan BLAS - y proporcionadas por el paquete revolution-mkl y activadas por el paquete r-revolution-revobase funcionarán en paralelo para problemas de álgebra lineal, y debería ver una diferencia en el caso base de usar solo los paquetes libblas *.

Sin embargo, el ejemplo anterior no es tan significativo, a menudo hago algo así como

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

para calcular una media recortada sobre un número de repeticiones.

Lo que es más importante, tenga en cuenta que su ejemplo incluye los RNG dibuja en los tiempos que son i) caros, y ii) invariante al método utilizado por lo que debe generarlo fuera del system.time().

Además de MKL, revolution-r también incluye algunos de los paquetes creados por REvolution de CRAN que se pueden usar para la ejecución en paralelo.

(Descargo de responsabilidad: Ayudé a REvo a armar esto para Ubuntu 9.10)

+0

Gracias, también por los consejos sobre el tiempo :-) –

+0

Tengo revolution r instalado en Ubuntu 13.04, y basado en el script de benchmark 2.5, el rendimiento no cambia en absoluto después de la instalación. Me pregunto si algo salió mal. También vea esta pregunta: http://askubuntu.com/questions/297968/how-to-make-revobase-package-work-in-r-3-0-1 – qed

+0

Ahora he utilizado el script de prueba en ambos R3 .0.1 y R2.15, con o sin revolution-r, los resultados son prácticamente los mismos. ¿Alguien podría confirmar esto? – qed

4

Ver este blog post de la revolución para más información. REvolution R 3.0 debe ser 100% compatible con R-2.9.2 de CRAN. Básicamente, usan bibliotecas de álgebra lineal de múltiples subprocesos y alto rendimiento y compiladores de optimización. mejoras Revolución incluyen:

  • librerías matemáticas de alto rendimiento optimizado para tomar ventaja de la caché del procesador, instrucciones vectoriales y multihilo (Intel Math Kernel Library - MKL) y
  • compiladores de optimización y las bibliotecas de tiempo de ejecución.

Hay algunos puntos de referencia en la página web de REvolution: REvolution R Performance y Simple Benchmarks.

pesar de que han contribuido varias extensiones interesantes para la comunidad R bajo una licencia de software libre (foreach, iterators, doSNOW y doMC), la extensión MKL es propietaria.

Personalmente, he cambiado a (CRAN) R 2.10.0 para tener las últimas características de R.

4

Solo para reiterar lo que Dirk mencionó sobre el tiempo: en su caso, la construcción de la matriz está tomando casi todo el tiempo. Mira lo que sucede (en mi sistema, donde no tengo la revolución) cuando me tire de él fuera de la función de temporización:

> 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 

En otras palabras, más del 90% del tiempo se dedica a la construcción de la matriz, menores de 10 años % transposición.