5

でパッケージmclapplyの機能を使おうとしています。この関数は、対数尤度距離を計算することによってシーケンス マトリックスに値を割り当てます。これは CPU を集中的に使用する操作です。parallelR

結果のsystem.time値は紛らわしいです:

> system.time(mclapply(worksample,function(x){p_seqi_modj(x,worksample[[1]],c(1:17))}))
   user  system elapsed 
 29.339   1.242  18.581 

elapsed集計時間 ( user+ )を意味すると思いましたsystem。この場合、上記の結果は何を意味し、何時に向ければよいでしょうか? user私の並列化されていないバージョンは、時間がかかりませんが、 elapsed.

4

1 に答える 1

3

ヘルプ ページ?system.timeには、関数によって返される値はクラス proc_time のオブジェクトであり、参照する必要があると記載されてい?proc.timeます。そこで、ユーザー時間は

cumulative sum of user and system times of any child processes

そのため、タスクは各コアで約 15 秒を費やしました (mclapplyデフォルトでは 2 つのコアを使用しmc.coresます。引数を参照してください)。

実際、プロセスと子の時間を分離する 5 つの要素を返すヘルプ ページの前半で、proc.time()印刷で使用される要約メソッドがユーザーとシステムの時間をプロセス + 子の時間に折りたたむことを確認したので、もう少し多くの情報が利用可能です。

于 2013-09-06T12:49:04.730 に答える