Мне любопытно узнать, можно ли запускать функции spastat, такие как тесты envelope или MAD, на нескольких процессорах на машине для ускорения вычислений? Есть ли какой-нибудь документ или учебник для этого?
Спасибо.
Мне любопытно узнать, можно ли запускать функции spastat, такие как тесты envelope или MAD, на нескольких процессорах на машине для ускорения вычислений? Есть ли какой-нибудь документ или учебник для этого?
Спасибо.
К сожалению, распараллеливание не является неотъемлемой частью 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]