成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
    • 1. 阿姆達(dá)爾定律公式
    • 2. 阿姆達(dá)爾定律的好處
    • 3. 阿姆達(dá)爾定律的局限性
    • 4. 使用阿姆達(dá)爾定律的示例
    • 5. 阿姆達(dá)爾定律如何影響系統(tǒng)架構(gòu)
    • 6. 如何利用阿姆達(dá)爾定律優(yōu)化系統(tǒng)
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

受用一生的定理:阿姆達(dá)爾定律

06/01 08:25
676
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

前言

阿姆達(dá)爾定律(Amdahl's Law)提供了一個(gè)最佳情況的估算,即通過優(yōu)化系統(tǒng)的特定部分可以提升多少系統(tǒng)性能,用于預(yù)測(cè)并行任務(wù)中系統(tǒng)性能提升的理論上限。該定律是由計(jì)算機(jī)科學(xué)家吉恩·阿姆達(dá)爾(Gene Amdahl, 1922-2015)于1967年提出的。

1. 阿姆達(dá)爾定律公式

以一個(gè)處理已知數(shù)量輸入數(shù)據(jù)的程序?yàn)槔?。這類程序通常包含一組難以并行化的順序語句,以及一部分可以并行化的語句。

假設(shè)為P(Parallel)可并行化代碼所占總代碼的比例,如果使用N(Number)計(jì)算單元而不是單個(gè)線程來解決問題,S(Speedup)為預(yù)期的加速比,阿姆達(dá)爾定律如下:

S = 1 / (1 – P + P/N)

2. 阿姆達(dá)爾定律的好處

阿姆達(dá)爾定律有助于快速評(píng)估可用于系統(tǒng)加速方案的利弊。通過在計(jì)算鏈的某個(gè)部分投入更多硬件,我們可以確定能夠?qū)崿F(xiàn)的加速倍數(shù)。

相反,我們可以利用該定律快速估算程序中哪些部分可以進(jìn)行優(yōu)化,從而獲得最佳效果。如果我們嘗試通過并行化來加速以順序操作為主的代碼部分,那么它帶來的投資回報(bào)將非常有限。

3. 阿姆達(dá)爾定律的局限性

在N個(gè)處理器上并行運(yùn)行代碼片段很少能帶來線性N倍數(shù)的速度提升。隨著程序中并行執(zhí)行線程數(shù)量的增加,擴(kuò)展問題也開始出現(xiàn)。最好的情況是,運(yùn)行時(shí)環(huán)境允許您將編程模型的線程映射到實(shí)際的物理中央處理單元線程和核心,但并非所有編程語言都支持此功能。

如果系統(tǒng)中的線程數(shù)超過處理器的可用線程數(shù),則必須處理上下文切換。這意味著線程會(huì)被中斷,其相關(guān)的內(nèi)部狀態(tài)會(huì)被保存,并且其緩存行(線程使用的內(nèi)部 CPU 緩存)會(huì)被刷新,例如,寫回內(nèi)存。

然后對(duì)新線程執(zhí)行相反的操作。考慮到主內(nèi)存比 CPU 慢一個(gè)數(shù)量級(jí),上下文切換會(huì)引入延遲。

此外,當(dāng)多個(gè) CPU 核心并行運(yùn)行時(shí),內(nèi)存帶寬也會(huì)成為一個(gè)影響因素。它們處理的數(shù)據(jù)必須從隨機(jī)存取存儲(chǔ)器加載,并且至少要將結(jié)果寫回。任何上下文切換都意味著需要消耗額外的內(nèi)存帶寬來交換線程數(shù)據(jù)。

這就是為什么并行化帶來的性能提升從未實(shí)現(xiàn)線性增長(zhǎng),即使在代碼的并行化部分也是如此。阿姆達(dá)爾定律提供了一個(gè)最佳情況的估計(jì)。

4. 使用阿姆達(dá)爾定律的示例

圖像處理中,假設(shè)你的程序讀取一些數(shù)據(jù),然后對(duì)每個(gè)數(shù)據(jù)項(xiàng)執(zhí)行獨(dú)立計(jì)算。讀取數(shù)據(jù)需要一分鐘,在單個(gè) CPU 線程上處理數(shù)據(jù)又需要三分鐘。每個(gè)元素(圖像幀)都是獨(dú)立的,可以單獨(dú)處理。需要多少硬件才能將執(zhí)行速度提高一倍?

P是并行化的比例,它代表四分鐘中的三分鐘,因此P=3/4,即0.75。需要將執(zhí)行速度提升一倍,因此加速比S=2。使用上述阿姆達(dá)爾定律公式并求解N,可以得到下面的公式和計(jì)算結(jié)果:

N = P / (P - 1 - 1/S) = 0.75 / (0.75 – 1 – 1/2) = 3

需要用三個(gè)處理器來解決這個(gè)問題,將數(shù)據(jù)處理時(shí)間從三分鐘縮短到一分鐘。然而,數(shù)據(jù)加載仍然需要一分鐘。硬件成本增加了兩倍,但速度卻只提高了一倍。

另外,占總時(shí)間四分之一的讀取數(shù)據(jù)部分不會(huì)消失,即使其余并行代碼的執(zhí)行速度無限快(即在零秒內(nèi))。

該定律將一個(gè)直觀正確的觀察形式化:如果你選取代碼中可以優(yōu)化的部分并無限加快其速度,最后順序部分的執(zhí)行時(shí)間將成為瓶頸。

這個(gè)網(wǎng)址(https://www.desmos.com/calculator/dra8fw2cea)展示了阿姆達(dá)爾定律公式的坐標(biāo)圖。通過點(diǎn)擊下圖左邊箭頭所指的按鈕,就可以看到加速比S隨著N的變化情況,而且也可以手動(dòng)滑動(dòng)來分析某一個(gè)N情況下,S隨著P的影響情況。

5. 阿姆達(dá)爾定律如何影響系統(tǒng)架構(gòu)

內(nèi)存帶寬瓶頸只是性能考慮因素之一,大容量存儲(chǔ)和網(wǎng)絡(luò)帶來的延遲是另一個(gè)主要因素。例如,即使擁有最好的索引,訪問數(shù)據(jù)庫(kù)表也需要進(jìn)行大量I/O 操作,而且每個(gè)操作都有其存儲(chǔ)或網(wǎng)絡(luò)延遲。

為了克服這一限制,系統(tǒng)架構(gòu)師可以通過在內(nèi)存和外部 I/O 設(shè)備之間添加更多硬件通道來增加系統(tǒng)的 I/O 容量,或者通過添加不同的物理主機(jī)來水平擴(kuò)展系統(tǒng)。這種水平擴(kuò)展只有在主機(jī)能夠獨(dú)立處理數(shù)據(jù)記錄或片段的情況下才有意義??梢酝ㄟ^“分片”來實(shí)現(xiàn)這一點(diǎn),這是一種常用的機(jī)制,將數(shù)據(jù)拆分成可獨(dú)立處理的片段。

例如,RAID1 驅(qū)動(dòng)器陣列將相同的數(shù)據(jù)存儲(chǔ)在多個(gè)驅(qū)動(dòng)器(稱為鏡像)中,以實(shí)現(xiàn)更快的讀取速度。訪問數(shù)據(jù)時(shí),系統(tǒng)可以將訪問請(qǐng)求分散到多個(gè)驅(qū)動(dòng)器上,從而加快程序的數(shù)據(jù)訪問速度。

6. 如何利用阿姆達(dá)爾定律優(yōu)化系統(tǒng)

即使將無限的資源投入到處理鏈的某個(gè)環(huán)節(jié),也無助于加速其余部分。優(yōu)化復(fù)雜系統(tǒng)的第一步是仔細(xì)觀察它,并確保我們了解它在各個(gè)環(huán)節(jié)的時(shí)間分配。

以代碼優(yōu)化為例:

第一步是在代碼中添加指標(biāo),用于觀察各代碼環(huán)節(jié)的延遲情況。利用這些指標(biāo)可能需要一些復(fù)雜的設(shè)置。最基本的方法是定期將指標(biāo)數(shù)據(jù)轉(zhuǎn)儲(chǔ)到存儲(chǔ)中。在企業(yè)環(huán)境中,程序員通??梢栽L問監(jiān)控和遙測(cè)系統(tǒng),以便了解自己代碼的行為。否則,開發(fā)人員將不知道如何進(jìn)行優(yōu)化。更糟糕的是,他們會(huì)盲目地花費(fèi)精力改進(jìn)某些代碼段,而這些代碼段在實(shí)際應(yīng)用中卻并非決定性的性能因素,這通常被稱為“過早優(yōu)化”。

一旦收集了這些指標(biāo),開發(fā)人員可以嘗試將他們的代碼路徑描繪成時(shí)間/性能格式的圖表。例如,假設(shè)一個(gè)請(qǐng)求來自網(wǎng)絡(luò)。處理此請(qǐng)求將創(chuàng)建多次數(shù)據(jù)庫(kù)訪問,然后進(jìn)行一些計(jì)算循環(huán)。這些操作中的每一個(gè)都可以有自己的指標(biāo)。識(shí)別最長(zhǎng)的代碼路徑并將其分解為單獨(dú)的計(jì)算和延遲時(shí)間間隔,然后集中精力找到最佳的優(yōu)化候選對(duì)象。

7. 總結(jié)

阿姆達(dá)爾定律不只是只能用于計(jì)算機(jī)科學(xué)中,也可用于生活、理財(cái)、做事等方方面面。平時(shí)可以多觀察、記錄和分析試試。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄
唐海县| 文昌市| 隆子县| 墨玉县| 垦利县| 同仁县| 周至县| 苏尼特右旗| 平潭县| 东阿县| 开封县| 通化市| 普兰县| 都匀市| 曲靖市| 麻栗坡县| 临武县| 莱阳市| 金昌市| 庆阳市| 铅山县| 汪清县| 赫章县| 邵东县| 社会| 新丰县| 金溪县| 贵溪市| 宕昌县| 拜城县| 拜城县| 西乡县| 定远县| 三明市| 延川县| 托克托县| 金昌市| 唐河县| 翁牛特旗| 容城县| 天台县|