можно ли запускать функции spatstat на нескольких процессорах

Мне любопытно узнать, можно ли запускать функции spastat, такие как тесты envelope или MAD, на нескольких процессорах на машине для ускорения вычислений? Есть ли какой-нибудь документ или учебник для этого?

Спасибо.


person BKS    schedule 13.09.2017    source источник


Ответы (1)



К сожалению, распараллеливание не является неотъемлемой частью spatstat, а оставлено на усмотрение пользователя. Для тестов огибающих и MAD самый простой вариант - это, вероятно, запустить envelope с меньшим количеством реализаций на каждом ядре, а затем объединить результаты с помощью pool.envelope. Способ параллельного запуска envelope может зависеть от ваших настроек. Простая возможность - использовать parallel::mclapply, который, как я знаю, работает в Linux "из коробки", но в пакетах CRAN наверняка доступны гораздо лучшие кроссплатформенные альтернативы:

library(spatstat)
ppplist <- replicate(4, cells, simplify = FALSE)
envlist <- parallel::mclapply(ppplist, spatstat::envelope, savefuns = TRUE, nsim = 10)
envfinal <- do.call(pool, envlist)
envfinal
#> Pointwise critical envelopes for K(r)
#> and observed value for 'X[[i]]'
#> Obtained from 40 simulations of CSR
#> Alternative: two.sided
#> Significance level of pointwise Monte Carlo test: 2/41 = 0.0488
#> .....................................................................
#>      Math.label     Description                                      
#> r    r              distance argument r                              
#> obs  hat(K)[obs](r) observed value of K(r) for data pattern          
#> theo K[theo](r)     theoretical value of K(r) for CSR                
#> lo   hat(K)[lo](r)  lower pointwise envelope of K(r) from simulations
#> hi   hat(K)[hi](r)  upper pointwise envelope of K(r) from simulations
#> .....................................................................
#> Default plot formula:  .~r
#> where "." stands for 'obs', 'theo', 'hi', 'lo'
#> Columns 'lo' and 'hi' will be plotted as shading (by default)
#> Recommended range of argument r: [0, 0.25]
#> Available range of argument r: [0, 0.25]
person Ege Rubak    schedule 13.09.2017
comment
Спасибо. Я собираюсь попробовать это и доложу через пару дней. - person BKS; 14.09.2017
comment
Привет, я вернулся к этому, чтобы проверить, есть ли какие-либо изменения в пакете spatstat для использования нескольких ядер? Спасибо. - person BKS; 02.10.2018
comment
К сожалению нет. Вам все равно придется делать это самостоятельно. - person Ege Rubak; 02.10.2018