CPU 性能:時鐘速度或核心數運行 JMP 時,在較低頻率下使用更多內核會更好,還是反之亦然? 我認為很少有平台是線程化的,所以這會讓我相信時鐘速度更重要。但我不確定這是否仍然正確。我知道我是在一般情況下發言,幾乎不可能準確地與之交談。不管怎麼說,還是要謝謝你。
回复:CPU 性能:時鐘速度或內核JMP 使用可用處理器的效果取決於運行的分析平台和正在處理的數據。 這是 JMP 在文本解析階段運行 Text Explorer,處理長文檔,行數 > 處理器數。 (其他平台的行為會有所不同,有些平台將無法利用線程。 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 的機器上開發的,這很可能是算法的調整目標。 例如,在 Text Explorer 完成解析步驟後,它使用一半的處理器組合解析結果,因為我們確定這比在 8 CPU 機器上使用所有處理器更快。
所以,是的,4-12 個 CPU,更快的 CPU 和足夠的內存來避免分頁。 如果您沒有足夠的內存來保存數據而無需分頁到磁盤,那麼沒有其他方法可以幫助您。
回复:CPU 性能:時鐘速度或內核@vince_faller :回答您最初的問題我個人建議優化一份 JMP(在 Windows 上)是獲得最快的 4 或 6 個處理器。
@txnelson :我應該更清楚,JMP 經常使用所有內核的一小部分,但並沒有將它們全部使用到容量。這讓我相信 JMP 運行時實際的“工作”線程少於 8 或 12 個,並且處理由操作系統從一個核心轉移到另一個核心。
JMP 的這一特性困擾著我,因此我花了一些時間來測試我的理論,即 JMP 只使用了全部內核的一小部分。 以下是在各自的 JMP 實例中同時運行 1、2、3 或 4 個腳本副本時的結果。
一個實例
19-21秒

兩個實例
26-28秒

三例
34-39秒

四個實例
43-47秒

一次運行兩個副本的時間肯定少於運行一個兩次的時間:

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; )
)
)
);回复:CPU 性能:時鐘速度或內核我的發現是不同的,這可能是由於我一直在測試的平台。當我運行 Random Forrest 時,我可以輕鬆地在 Windows 7 和 Windows 10 下的所有 CPU 上運行。平均而言,佔用總 CPU 容量的 35% 以上。我只有 8 個進程....不是你的 12 個美妙的總數,但所有 8 個都在解決這個問題。
回复:CPU 性能:時鐘速度或內核我還沒有看到一個 JMP 實例在 Windows 7 桌面上使用 12 個內核中的 6 個以上。 它通常伴隨著 25% 的處理器使用率。回复:CPU 性能:時鐘速度或內核文斯,
大多數分析平台都是多線程的,而 JSL 大多是單線程的。所以這是一個混合案例。我的建議是打開任務管理器,然後打開其中的性能選項卡。然後,如果您運行典型的工作流程,您將清楚地看到您的應用程序何時使用多核,何時使用單核。從那裡,您可以做出決定。