Я изучаю параллельные вычисления в R и обнаружил, что это происходит в моих экспериментах.
Вкратце, почему в следующем примере большинство значений user в t
меньше, чем в mc_t
? Моя машина имеет 32 ГБ памяти, 2 процессора с 4 ядрами и всего 8 гиперпотоков.
system.time({t = lapply(1:4,function(i) {
m = matrix(1:10^6,ncol=100)
t = system.time({
m%*%t(m)
})
return(t)
})})
library(multicore)
system.time({
mc_t = mclapply(1:4,function(m){
m = matrix(1:10^6,ncol=100)
t = system.time({
m%*%t(m)
})
return(t)
},mc.cores=4)
})
> t
[[1]]
user system elapsed
11.136 0.548 11.703
[[2]]
user system elapsed
11.533 0.548 12.098
[[3]]
user system elapsed
11.665 0.432 12.115
[[4]]
user system elapsed
11.580 0.512 12.115
> mc_t
[[1]]
user system elapsed
16.677 0.496 17.199
[[2]]
user system elapsed
16.741 0.428 17.198
[[3]]
user system elapsed
16.653 0.520 17.198
[[4]]
user system elapsed
11.056 0.444 11.520
И sessionInfo()
:
> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] multicore_0.1-7
Чтобы уточнить: извините, что мое описание может быть двусмысленным. Я понимаю, что параллель все же быстрее для всей миссии. Однако счетчик времени есть только в функции для расчета, время установки оверхеда для каждого дочернего процесса в mclapply
не учитывается. Поэтому я все еще не понимаю, почему этот чистый расчет (т.е. m%*%t(m)
) выполняется медленнее.
matrix(4*10^6,4000,1000)
, сmcapply
, которое создает четыре матрицы 1000x1000 и объединяет возвращаемые объекты. - person Carl Witthoft   schedule 12.02.2014mclapply
не учитывается. Так что я все еще не понимаю, почему этот чистый шаг вычисления медленнее. - person TomHall   schedule 12.02.2014