2016-10-03 20 views
4

32コア(64スレッド)のLinuxマシン上で実行するプログラムがあるとします。その中で10コア(20スレッド)しか使用できません。だから私はプログラムを実行する前にこれを指定したいと思います。MATLAB:数コア/スレッドの制御

Iは、グーグルとmaxNumCompThreads見つかったが、私のマシン上でテストするときのMATLAB 2016a、コアI5(2コア、4つのスレッド)で動作するように思われません。それは私が、私は以下の

maxNumCompThreads(1) 
maxNumCompThreads(2) 
maxNumCompThreads(4) 
maxNumCompThreads('Automatic') 

のいずれかを行うときに、私は(私はdelete(gcp('nocreate'))で、現在parpoolセッションを閉じたびに)parpoolを試してみましたfeature('numCores')ため、同じ出力を得ること、です。 parpool(4)を実行しているときにエラーが発生しました(理由:parpoolがコアの数をとり、ハイパースレッディングが自動的に有効になり、テストマシンの物理コアが2つしかありません)。だから私はparpool(1)parpool(2)でテストしました。再び、feature('numCores')の出力はでなく、に変更されました。

質問:上記の最初のパラグラフで説明した状況のための仕事のための正しいツールは何ですか? feature('numCores')適切な仕様が有効かどうかを確認する適切な監視ツールはありますか?


私は上記を参照し続けると同じfeature('numCores')出力は次のようになります。

MATLAB detected: 2 physical cores. 
MATLAB detected: 4 logical cores. 
MATLAB was assigned: 4 logical cores by the OS. 
MATLAB is using: 2 logical cores. 
MATLAB is not using all logical cores because hyper-threading is enabled. 

編集:私はLinuxマシン上でparpool(10)を実行したときに、私は次のエラーを得た

Starting parallel pool (parpool) using the 'local' profile ... Error using parpo    ol (line 103) 
Couldn't interpret output from psname.sh: "" 

Error in parpool_test_2016_10_03 (line 3) 
parpool(10); 
+0

more/less/'parpool(1)'を使うことができないので、2コアと4トレッドのコンピュータには奇妙な結果が出るかもしれません。ほとんど意味がありません。いいえ、ええ、ただの仮説 –

+0

@AnderBiguri面白いです。私はそれをテストする方法を見つけることができるかどうかがわかります。報告する。 – yurnero

+0

@AnderBiguri編集をご覧ください。 'parpool'はLinuxマシンでも動作しません。 – yurnero

答えて

0

いいえ、適切な監視ではありませんツール。代わりにfeature('numthreads')を見てください:一般的に

>> feature('numcores') 
MATLAB detected: 4 physical cores. 
MATLAB detected: 8 logical cores. 
MATLAB was assigned: 8 logical cores by the OS. 
MATLAB is using: 4 logical cores. 
MATLAB is not using all logical cores because hyper-threading is enabled. 

ans =  
    4 

>> feature('numthreads')  
ans =  
    4 

>> maxNumCompThreads(1)  
ans =  
    4 

>> feature('numcores') 
MATLAB detected: 4 physical cores. 
MATLAB detected: 8 logical cores. 
MATLAB was assigned: 8 logical cores by the OS. 
MATLAB is using: 4 logical cores. 
MATLAB is not using all logical cores because hyper-threading is enabled. 

ans =  
    4 

>> feature('numthreads')  
ans =  
    1 

が、それは警告なしに変更することが文書化されていないと発生しやすいのですとしてfeatureを使用して注意してください。 featureの詳細については、this postthis StackOverflow questionをご覧ください。

関連する問題