Виртуальная машина Google не масштабируется с параллельной обработкой - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть виртуальная машина на облачной платформе Google с установленным сервером Rstudio и версией R 3.5.1. Тип машины - n1-highmem-64, что означает, что он имеет 64 ядра.

Я заметил, что чем больше ядер я использую, тем медленнее становится каждое ядро. Например, для подгонки модели линейной регрессии с большим размером выборки в среднем требуется примерно вдвое больше времени на ядро, когда я использую все ядра, по сравнению с только половиной ядер. Как это возможно? На моем локальном ПК с 8 ядрами у меня нет такой же проблемы. Среднее время на ядро ​​одинаково, независимо от того, сколько ядер я использую.

Вот небольшой пример:

library(parallel)
cl <- makeCluster(64)
cores_used <- 2^(0:6)
average_time_per_core <- sapply(cores_used, function(ncore) {
  mean(parSapply(cl, 1:ncore, function(i) {
    system.time({
      set.seed(1)
      n = 10^7
      y = rnorm(n)
      x = y + rnorm(n)
      lm(y ~ x)
    })[["elapsed"]]
  }))
})
plot(cores_used, average_time_per_core)

enter image description here

...