6

R がすべての CPU を使用しているわけではないことに気付きました。これを大幅に (100% まで) 増やしたいと考えています。いくつかの関数を並列化するだけにはしたくありません。R に CPU リソースをもっと使ってもらいたい。lp() 関数を使用して純粋な IP セット パッキング プログラムを実行しようとしています。現在、私は Windows を実行しており、コンピューターには 4 つのコアがあります。

Snow、doParallel、および foreach を試してみました (実際に何をしているのかはわかりませんが)。

私のコードではこれを持っています...

library(foreach)
library(doParallel)
library(snowfall)

cl <- makeCluster(4)
registerDoParallel(cl)

sfInit(parallel = TRUE, cpus = 4)


#code that is taking a while to run but does not involve simulations/iterations

lp (......, all.int = TRUE)

sfStop()

R が動かなくなり、lp() を長時間実行します。私の CPU は約 25% ですが、どうすればこれを増やすことができますか?

4

2 に答える 2

0

4 つの異なる LP を並行して実行しようとしている場合、 で実行する方法は次のとおりです snowfall

sfInit(parallel=TRUE, cpus=4)
sfSource(code.R) #if you have your function in a separate file
sfExport(list=c("variable1","variable2",
            "functionname1")) #export your variables and function to cluster
results<-sfClusterApplyLB(parameters, functionname) #this starts the function on the clusters

たとえば、sfClusterApply の関数に LP を含めることができます。

それ以外の場合は、質問に関するコメントを参照してください

于 2015-11-30T10:17:34.790 に答える
0

コメントに十分なスペースがないため、これを回答として投稿します。
これはあなたの質問に対する直接の答えではなく、パフォーマンスに対する答えです。


R はデフォルトで遅い統計ライブラリを使用しますが、デフォルトでは単一のコアしか使用できません。改善されたライブラリは OPENBLAS/ATLAS です。ただし、これらはインストールが面倒な場合があります。個人的には、このガイド
を使用して最終的に機能するようになりました。

最終的に、BLAS ライブラリとマルチ CPU サポートの両方が改善されたRevolution R open(RRO) + MKL を使用することになりました。これは、通常の R の最大 20 倍の速度を持つことになっている代替の R ディストリビューションです (これは確認できませんが、はるかに高速です)。

さらに、CRAN HPC パッケージをチェックして、lp 機能をサポートする改善されたパッケージがあるかどうかを確認できます。

マルチ CPU の使用状況を調査するためのパッケージもあります。
Gavin によるこの回答、および上記の @ user3293236 の回答は、マルチ CPU の使用を可能にするパッケージのいくつかの可能性を示しています。

于 2015-11-30T10:36:49.703 に答える