У меня есть следующий код R с явно не включенным распараллеливанием:
matrix <- matrix(rnorm(1000^2), ncol = 1000)
vec <- rnorm(1000)
for (i in 1:10000){
a <- sum(matrix%*%vec)
}
Когда я выполняю цикл for, я замечаю в системном мониторе, что все ядра используются на 100%.Насколько я понимаю, петли в R всегда последовательны.Я замечаю, что с одним большим матричным умножением используется только одно ядро, поэтому я не верю, что при умножении матрицы происходит распараллеливание.
Большая проблема в том, что я написал сэмплер MCMC.это должно быть запущено последовательно как цепь Маркова, но когда я запускаю сэмплер, я вижу, что все ядра используются.Приведенный выше код является лишь минимальным рабочим примером.Должен ли я быть обеспокоен тем, что сэмплер MCMC не работает должным образом в последовательном режиме (т. Е. Как цепочка Маркова)?
Я использую R 3.5.2 внутри рокера / тидиверса: 3.5.2 контейнер Docker и мойлокальная ОС - Ubunutu 18.04.
Спасибо за любую помощь!
Вот информация о моей сессии:
R version 3.5.2 (2018-12-20)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)
Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.19.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
[6] LC_MESSAGES=C LC_PAPER=en_US.UTF-8 LC_NAME=C 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
loaded via a namespace (and not attached):
[1] compiler_3.5.2 tools_3.5.2 yaml_2.2.0