我正在尝试在R中使用parallel包的mclapply函数。该函数通过计算对数似然距离将值分配给序列矩阵-这是一个CPU密集型操作。
由此产生的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上占用的时间更多。
发布于 2013-09-06 20:49:05
帮助页面?system.time指出,函数返回的值是proc_time类的对象,我们应该咨询?proc.time。在那里,我们了解到用户时间是
cumulative sum of user and system times of any child processes因此,您的任务在每个内核上花费了大约15秒(mclapply默认使用2个内核,请参阅mc.cores参数)。
实际上,我们在前面的帮助页面中看到,proc.time()返回了五个分隔进程时间和子时间的元素,打印中使用的摘要方法将用户和系统时间压缩为进程+子时间,因此有更多信息可用。
https://stackoverflow.com/questions/18654497
复制相似问题