的parallel
包的detectCores()
功能包括由於R 2.14.0確實你需要看你實際有多個核心內容:
R> parallel::detectCores()
[1] 8
R>
此外,mcparallel
本身不轉的矩陣乘法成並行操作(因爲這是一個「硬」問題,請參閱ScaLAPACK庫)。但是你可以嘗試一些簡單的像這樣:
R> X <- 1:1e3
R> rbenchmark::benchmark(serial=sapply(X, function(x) log(sqrt(x))),
+> parallel=mclapply(X, function(x) log(sqrt(x))),
+> replications=500)
test replications elapsed relative user.self sys.self user.child sys.child
2 parallel 500 12.018 10.96 0.000 10.59 0.952 15.07
1 serial 500 1.097 1.00 1.208 0.00 0.000 0.00
R>
所以對於一個簡單的操作(sqrt(log(x))
)短期載體,平行收益的500次重複。但生活從不容易:在較大的向量差消失:
R> X <- 1:1e5
R> rbenchmark::benchmark(serial=sapply(X, function(x) log(sqrt(x))),
+> parallel=mclapply(X, function(x) log(sqrt(x))),
+> replications=10)
test replications elapsed relative user.self sys.self user.child sys.child
2 parallel 10 2.030 1.00 0.476 0.272 1.952 1.112
1 serial 10 2.821 1.39 2.228 0.592 0.000 0.000
R>
可悲消息是並行計算是棘手的,並不僅僅是粘表達成mcparallel
或parallel
更難。
是否有R中的呼叫(而不是用戶眼球頂部),它允許用戶檢查任務使用的內核數量 – tim 2015-01-14 13:28:52
如果您有新問題,我建議您提出一個新問題而不是作爲評論發佈。作爲評論,它不會引起太多關注。在linux下,這一行可能很有用:http://stackoverflow.com/questions/6481005/obtain-the-number-of-cpus-cores-in-linux。 – 2015-01-14 13:37:11