2

我試圖使用Amdahl定律來計算的代碼加速和下面是我的CPU規格: enter image description here芯數用來加快計算

Amdahl定律: -

Speedup = 1/1-p+ (p/n) 

,其中n =處理器數量。

根據我的規格,它說核= 4,而邏輯處理器= 8

我應該公式中的number of processors使用?

回答

2

首先,讓我解釋一下你不知道的情況下核心和邏輯處理器的含義。核心意味着實際的物理處理器核心,並且您的案例中有4個核心。另一方面,邏輯處理器意味着,您正在使用超線程,這意味着在一個物理內核上,您可以同時運行兩個進程。您可以在以下鏈接中找到更多信息:https://en.wikipedia.org/wiki/Hyper-threading

在您的問題中有兩件事需要考慮。首先,阿姆達爾定律比超線程更早,所以法律本身假定你有物理處理器。其次,雖然超線程技術會提高性能,但如果您使用兩個邏輯處理器而不是一個邏輯處理器,則無法實現雙倍性能。因此,從Amdahl法則的角度來看,如果您使用4個核心進行計算,情況會更好。

例如,如果你的代碼的50%可以並行,有4個物理內核,你將有:

Speedup = 1/ ((1-0.5) + (0.5/4)) = 1.6 

如果使用8個處理器,你將有:

Speedup = 1/ ((1-0.5) + (0.5/8)) = 1.833 

然而,在使用邏輯內核的情況下,你永遠不會達到1.833。也許你最多可以達到1.7。在物理內核使用情況下,由於內存延遲和分支,您可能會達到1.55。要記住的主要問題是,Amdahl定律不包括核心數量,而是加速到基線情況,因此,您不會達到計算的理論數量。

注意:在研究團體中,對於性能計算和實驗,超線程和邏輯內核通常不包括在內。

+1

您暗示了這一點,但可以肯定的是,某些代碼比其他代碼更友好。對於具有長依賴鏈和低ILP的代碼(並不是太大的緩存足跡......),在一個物理內核上運行兩個線程可能幾乎不會使對方減慢速度,所以您可能獲得與8個完整內核幾乎一樣好的結果。但其他代碼幾乎沒有任何加速,因爲它已經使物理內核在沒有HT的情況下很忙。 –