ブートストラップを使用して大規模な分析を行いたいと思います。私は、ブートストラップの速度は、次のコードのように、並列コンピューティングを使用して増加していることを見た:計算の全体の数は、私の場合に大きくなるように、"boot"パッケージを使用したブートストラップのGPUコンピューティング
# detect number of cpu
library(parallel)
detectCores()
library(boot)
# boot function --> mean
bt.mean <- function(dat, d){
x <- dat[d]
m <- mean(x)
return(m)
}
# obtain confidence intervals
# use parallel computing with 4 cpus
x <- mtcars$mpg
bt <- boot(x, bt.mean, R = 1000, parallel = "snow", ncpus = 4)
quantile(bt$t, probs = c(0.025, 0.975))
しかし
パラレルコンピューティング(10^6 GPUコンピューティングを使用して速度をさらに向上させる方法があることをお読みください(link1、link2)。 GPUコンピューティング
m <- matrix(rnorm(10^6), ncol = 1000)
csm <- gpuR::colSums(m)
しかし、パッケージだけで、このような行列演算など、いくつかの特定のR関数を扱うことができるように私には思える、線形代数や:あなたは簡単のようにいくつかの機能とGPUコンピューティングを使用することができますクラスター分析(link3)。 別の方法として、CUDA/C/C++/Fortranを使用して独自の関数(link4)を作成する方法があります。しかし、私はむしろR.
で解決策を探しています私の質問は、したがって、次のとおりです。
はそれがboot
パッケージと他のRパッケージ(例えばquantreg
)を使用して、ブートストラップ用のGPUコンピューティングを使用することは可能ですか?
私は2番目のリンクに行き、 "boot"で検索すると複数のヒットが得られますか? –
あなたの答えをありがとう!あなたは正しいですが、このタスクビューの1つのセクションだけがGPUコンピューティング(CPUではなく)に対処しています。残りの部分はちょうど並行計算です - あるいは、私がしなかったものを見つけましたか? – ehi
gpuR :: colMeansなどのgpu対応メソッドがあるオブジェクトを渡すと、通常の関数ディスパッチでこれが処理されます。 gpuのインターフェースはかなりOS特有の傾向があり、あなたはどのような種類のハードウェアとソフトウェアがこの取り組みのターゲットとなるかを示していません。 –