R en paralelo

Trabajo sobre una máquina de 8 núcleos y 24 GB de RAM. Y que conste que se me ha llegado a quedar chica.

Algunos programas que ejecuto tienen (o contienen pedazos de) la forma

  1. calcula A
  2. calcula B
  3. calcula C
  4. combina A, B y C

Obviamente, se me ocurre ejecutarlos así:

  1. calcula A, B y C en paralelo
  2. cuando acabe el paso anterior, combina A, B y C

Y aún me sobrarían 5 núcleos y bastante RAM. La pregunta es: ¿cómo?

Inspirado en esto, últimamente hago:

library(parallel)
tasks <- list(
  job1 = function() calcula.A(args.A),
  job2 = function() calcula.B(args.B),
  job3 = function() calcula.C(args.C)
)
 
out <- mclapply( 
  tasks, 
  function(f) f(), 
  mc.cores = length(tasks) 
)  

Y la verdad, va como un tiro.

5 comentarios sobre “R en paralelo

  1. alberto 15 mayo, 2014 9:53

    Gracias por este post Carlos, tengo muchas ganas de probar R en paralelo y este post es una gran motivación!!

  2. Manuel 15 mayo, 2014 11:00

    Por curiosidad, que máquina tienes y con que SO trabajas (creo que alguna vez has comentado que usas ArchLinux).

  3. luis 16 mayo, 2014 23:48

    install.packages(‘parallel’)
    Installing package into ‘/usr/local/lib/R/site-library’
    (as ‘lib’ is unspecified)
    Aviso en install.packages(“parallel”) :
    ‘lib = “/usr/local/lib/R/site-library”‘ is not writable
    Would you like to use a personal library instead? (y/n) y
    Would you like to create a personal library
    ~/R/x86_64-pc-linux-gnu-library/3.0
    to install packages into? (y/n) y
    — Please select a CRAN mirror for use in this session —

    Mensajes de aviso perdidos
    package ‘parallel’ is not available (for R version 3.0.2)
    >
    >

  4. Carlos J. Gil Bellosta 17 mayo, 2014 16:05

    ¿La máquina que menciono? No sé apenas nada del hardware. En eBay tenemos una nube privada (como las de Amazon) en la que podemos pedir recursos (disco, memoria, núcleos). También podemos instalar el software que queremos.

    Yo, tal vez por pereza, instalo Ubunbu en los servidores que manejo (uno en la empresa y otro propio) y Xubuntu en mis portátiles. No obstante, no dejo de considerar la opción de migrarlo todo a Archlinux. Sobre todo, para evitar tener que actualizar la versión periódicamente.

Los comentarios están desabilitados.