私はRでマルチコア・コンピューティングを行っています。私はコア数が増えている間に経過時間が増えるのはなぜですか?
ここでは、各計算のコードと出力を示します。なぜコアの数が増えると経過時間が長くなるのですか?これは実際には直感的ではありません。コアの数が増えるにつれて経過時間が減少することは合理的だと思います。これを修正する方法はありますか?ここで
コードです:
library(parallel)
detectCores()
system.time(pvec(1:1e7, sqrt, mc.cores = 1))
system.time(pvec(1:1e7, sqrt, mc.cores = 4))
system.time(pvec(1:1e7, sqrt, mc.cores = 8))
ありがとうございました。
イメージを投稿するのではなく、誰でも簡単に実行できるように、コードをコピーして貼り付けてください。 – nicola
ありがとうございます。私はコードを追加しました! –
'pvec'を呼び出すとかなりのオーバーヘッドがあります。入力ベクトルは塊で分割し、各塊の新しいジョブを作成する必要があります。これらの操作には時間がかかります。高速かつベクトル化された演算( 'sqrt'など)の場合、このアプローチは実際には遅くなる可能性があります。何が起こっているのかを把握するには 'pvec'のソースコードを見てください。 – nicola