CPU パフォーマンス: クロック速度またはコアJMP を実行する場合、より低い周波数でより多くのコアを使用した方がよいでしょうか、それともその逆でしょうか? スレッド化されているプラットフォームはほとんどないので、クロック速度がより重要であると私は信じるようになると思いました.しかし、これがまだ真実かどうかはわかりません。私は一般的なケースで話していることを知っていますが、正確に話すことはほとんど不可能です.とにかくありがとう。
Re: CPU パフォーマンス: クロック速度またはコア数JMP が利用可能なプロセッサをどの程度使用できるかは、実行中の分析プラットフォームと処理中のデータによって異なります。 これは、テキスト解析フェーズでテキスト エクスプローラーを実行している JMP です。長いドキュメントで、行数 > プロセッサ数を指定しています。 (他のプラットフォームでは動作が異なり、スレッド化を利用できないプラットフォームもあります。 Text Explorer の解析は、私が最近取り組んだものです。)
100% busy100% ビジー
Text Explorer のアルゴリズムは、常にマシンを 100% ビジー状態に保つことができるわけではありません。 一部の作業は、最初に完了する他の作業に依存します。また、スレッド化された一部の作業は、スレッドを待機させる方法でリソース (メモリ アクセスなど) を競合します。
dt = New Table( "bigtext",
Add Rows( 1000 ),
New Column( "text", Character, "Nominal", formula( Repeat( "aaa bbb ccc ", 1e5 ) ) )
);
dt << Text Explorer(
Text Columns( :text )
);
CPU の追加には制限があります。ここでは、すべての 32/64 CPU がビジーに見えますが、作業はほぼ同じ速度で進行しています。
100% busy but not making progress much faster100% 忙しいが、あまり速く進歩していない
これらの CPU が互いに干渉していると思われます。 メモリ内を移動する GB のドキュメントは、CPU のキャッシュ メモリを大量に消費する可能性があります。 ほとんどの場合、JMP は 4 から 12 個の CPU を搭載したマシンで開発されており、アルゴリズムがそのように調整されている可能性があります。 たとえば、テキスト エクスプローラーが解析ステップを終了した後、プロセッサの半分を使用して解析結果を結合します。これは、8 CPU マシンですべてを使用するよりも高速であると判断したためです。
つまり、はい、4 ~ 12 個の CPU、より高速な CPU、およびページングを回避するのに十分なメモリです。 ディスクにページングせずにデータを保持するのに十分なメモリがない場合は、他に何も役に立ちません。
Re: CPU パフォーマンス: クロック速度またはコア数@vince_faller : 最初の質問に答えるために、(Windows で) JMP の 1 つのコピーを最適化するための私の個人的な推奨事項は、可能な限り最速の 4 つまたは 6 つのプロセッサを取得することです。
@txnelson : もっとはっきりさせておくべきだったのですが、JMP はすべてのコアの一部を使用することがよくありますが、すべてのコアを使用しているわけではありません。このことから、JMP は 8 つまたは 12 未満の実際の「ワーカー」スレッドで実行されており、処理はオペレーティング システムによってコアからコアに移動されていると思われます。
JMP のこの特性が気になるので、JMP は全コアの一部しか使用しないという私の理論をテストするのに時間を費やしました。 以下のスクリプトの 1、2、3、または 4 つのコピーをそれぞれ独自の JMP インスタンスで同時に実行した場合の結果を次に示します。
1 つのインスタンス
19~21秒

2 つのインスタンス
26~28秒

3 つのインスタンス
34~39秒

4 つのインスタンス
43~47秒

一度に 2 つのコピーを実行する時間は、1 つを 2 回実行する時間よりも確実に短くなります。

Names default to here( 1);
dt = Open( "$Sample_data/probe.jmp", Private );
Random reset(1);
valcol = dt << New Column( "Validation",
Numeric, "Nominal", Set formula( Random Category( 0.75, 0, 0.25, 1, 2 ) ),
Value Labels( {0 = "Training", 1 = "Validation", 2 = "Test"} ), Use Value Labels( 1 )
);
dt << Run Formulas; valcol << Delete Formula;
timeboot = Function( {},
start = Today();
xvars = Substitute(Char((dt << Get Column Names)[8::394]), "{", "", "}", "");
Eval( Parse(
"rf = dt << Bootstrap Forest(
Y( :Process ),
X( " || xvars || " ),
Validation Portion( :Validation ),
Method( \!"Bootstrap Forest\!" ),
Portion Bootstrap( 1 ),
Number Terms( 30 ),
Number Trees( 2000 ),
Early Stopping( 0 ),
Go
);"
));
rf << Close Window;
end = Today();
return(end - start);
);
win = New window("Time Bootstrap",
V List Box(
r = text box( "", << Set Width( 100 ) ),
H List Box(
Button Box( "Start", r << Set Text( Char( timeboot() ) || " seconds" ) ),
Button Box( "Close", dt << Close Window; win << Close Window; )
)
)
);Re: CPU パフォーマンス: クロック速度またはコア数私の調査結果は異なります。これは、テストしたプラットフォームが原因である可能性があります。Random Forrest を実行すると、Windows 7 と Windows 10 の両方で、すべての CPU で簡単に実行できます。平均して、合計 CPU 能力の 35% 以上を占めます。私は 8 つのプロセスしか持っていません....あなたの素晴らしい合計 12 ではありませんが、8 つすべてが問題に取り組んでいます。
Re: CPU パフォーマンス: クロック速度またはコア数Windows 7 デスクトップで JMP の 1 つのインスタンスが 12 コアのうち 6 コア以上を使用しているのを見たことがありません。 それは通常、25% のプロセッサ使用率でぐちゃぐちゃになります。Re: CPU パフォーマンス: クロック速度またはコア数ビンス、
分析プラットフォームのほとんどはマルチスレッドですが、JSL はほとんどがシングルスレッドです。したがって、混合ケースです。私がお勧めするのは、タスク マネージャーを開いてから、その中の [パフォーマンス] タブを開くことです。その後、通常のジョブ フローを実行すると、アプリケーションがマルチ コアで実行されている場合とシングル コアで実行されている場合が明確にわかります。そこから、意思決定を行うことができます。