幾個JSL問題大家好!
我想知道是否有人知道以下答案:
- 是否有一個JSL函數來確定主機可以同時運行的線程數。
- 是JMP Pro多線程的模擬功能嗎?
歡迎任何想法。
謝謝!
中號回复:幾個JSL問題1)不。但您可以使用JSL推斷答案:
x=j(1000,1,.);
i=0;
parallelassign({q=i++},x[r,c]=q);
show(i);
但這只是*答案,而不是*答案。即使是單個CPU機器也可以擁有100個線程。當前的CPU通常具有一些超線程功能,允許更快的線程切換。但上面的i值可能就是你想要的。說明:在{q = i ++}內,q是每個線程實例中的局部變量,i ++是在線程外部計算的初始化值。您不應編寫依賴於此行為的代碼,也不應編寫矩陣元素初始化的明顯順序。
2)看一下任務管理器(WIN 7在顯示單個CPU比10的情況下做得更好)。我猜是的。
(MFI是I / O綁定的並且使用線程來讀取文件並且將受益於單個CPU機器上的線程;用於在一個線程中讀取文件的I / O不會阻止另一個線程使用CPU來解析數據已經讀取了另一個文件。但是模擬可能是CPU限制的,可能沒有I / O;如果它是線程的,它應該受益於多個CPU。上面的ParallelAssign受內存限制;存儲器的帶寬將決定數據寫入矩陣的最大速度...更多的CPU只有在x [r,c] = ...的右側計算速度慢時才有用。)
回复:幾個JSL問題有趣的問題, @MikeD_Anderson 。你能分享一下你的問題嗎?
回复:幾個JSL問題謝謝, @Craige_Hales !我認為那會奏效。 我希望有一個JSL函數來詢問主機OS處理器上有多少個核心。 我剛嘗試了你的代碼片段,它給了我相同的答案(我的i9處理器有6個內核,每個內核有2個線程= 12個線程)。
@Jeff_Perkinson - 我正在嘗試進行模擬的總運行時間,即 如果我的模型需要2秒鐘運行,那麼進行2500次模擬(默認),在每個核心2個線程上分佈6個核心(假設模擬是多線程的),模擬應該花費417秒(6分鐘)。 我想在加載項中添加一條警告消息,我正在努力為用戶提供模擬應該花多長時間的大概。 這不是完美的數學,但它至少會讓我說,“嘿 - 這個模擬需要花費1個小時才能運行 - 你確定要運行嗎?”我可以獲得模型的一次迭代的處理時間 - 沒有汗水 - 但是弄清楚線程的數量是我難以接受的。
最好,
中號
回复:幾個JSL問題加倍CPU的數量永遠不會使CPU和內存受限的任何實際應用程序的速度加倍......通常的情況。內存帶寬總是成為一個問題。考慮到其他無法控制的內容,您可以假設有2個或4個CPU並且仍然有很好的猜測。如果提前結束,沒有人會抱怨。