0

次のコードを高速化したい場合、どうすればよいですか?

pcg <- foreach(boot.iter=1:boot.rep) %dopar% {
d.boot<-d[in.sample[[boot.iter]],]

*ここでは、.sample[[boot.iter]] でランダムに 1000 行の番号を生成します。

全体のタスクを分割し、分割されたトライアルを各コアに送信することを計画しました。例えば、

sub_task<-foreach(i=1:cores.use)%dopar%{
for (j in 1:trialsPerCore){
d.boot<-d[in.sample[[structure[i,j]]],]}}

*構造は、1 から boot.rep までを含む行列です。

しかし、これは機能しません。foreach 内で「for」ループを使用できないようです。また、d.boot は各コアの最後の反復のみを保持します。

オンラインで検索しようとしたところ、次のコードが機能することがわかりました。

sub_task<foreach(i=1:cores.use)%:%
foreach(j=1:trialsPerCore)%dopar%{
d.boot<-d[in.sample[[structure[i,j]]],]}

でも本来の機能と似ていると思いますし、大幅な強化はないと思います。

何か提案はありますか?

4

1 に答える 1