ual é a maneira mais fácil de paralelizar uma função vetorizada em
Tenho uma lista muito grandeX
e uma função vetorizadaf
. Eu quero calcularf(X)
, mas isso levará muito tempo se eu fizer isso com um único núcleo. Eu tenho (acesso a) um servidor de 48 núcleos. Qual é a maneira mais fácil de paralelizar o cálculo def(X)
? A seguirnã a resposta certa
library(foreach)
library(doMC)
registerDoMC()
foreach(x=X, .combine=c) %dopar% f(x)
O código acima irá paralelizar o cálculo def(X)
, mas o fará aplicandof
separadamente para cada elemento deX
. Isso ignora a natureza vetorizada def
e provavelmente fará as coisasMais devaga como resultado, não mais rápido. Em vez de aplicarf
elementwise paraX
, Eu quero dividirX
em pedaços de tamanho razoável e apliquef
para aqueles
Então, devo apenas dividir manualmenteX
em 48 sublistas de tamanho igual eentã Apliquef
para cada um em paralelo, em seguida, reunir manualmente o resultado? Ou existe um pacote projetado para isso?
Caso alguém esteja se perguntando, meu caso de uso específico éAqu.