成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

并發(fā)編程下的Amdahl性能定律

開(kāi)發(fā) 開(kāi)發(fā)工具
Amdahl定律,系統(tǒng)中某部件由于采用某種方式使系統(tǒng)性能改進(jìn)后,整個(gè)系統(tǒng)系能的提高與該方式的使用頻率或占總的執(zhí)行時(shí)間的比例有關(guān)。

理解Amdahl定律

如果你想利用多核的優(yōu)勢(shì)在盡可能少的時(shí)間運(yùn)行盡可能多的指令,那么就需要以并行的序列分離代碼。然而,大多的算法需要運(yùn)行一些串行代碼來(lái)調(diào)整并行執(zhí)行。例如,并行執(zhí)行很多代碼塊,最后收集他們執(zhí)行的結(jié)果。那些分解并行執(zhí)行工作復(fù)雜和收集執(zhí)行結(jié)果的代碼是串行代碼,它是不能利用并行的優(yōu)勢(shì)的。如果你的算法中有很多這樣的代碼片段,那么串行代碼所占的比例就會(huì)增加,并且能夠獲取到的性能收益就會(huì)減少。

Gene Amdahl是一個(gè)著名計(jì)算機(jī)架構(gòu)師,當(dāng)一個(gè)系統(tǒng)中僅有少量的計(jì)算機(jī)改善硬件的時(shí)候,那么能夠獲得最大的性能改善是多少呢?他做了大量與這方面有關(guān)的觀(guān)察研究。他使用這些觀(guān)察結(jié)果定義了Amdable’s Law,它是由一個(gè)預(yù)測(cè)使用多核處理器在理論上可以獲得最大性能改善的公式組成。它也使用于那些運(yùn)行在多核處理器上的并發(fā)算法。

Maximum speedup(in times) = 1/((1-p) + p/n)

在這個(gè)公式中

P就是代碼中可以完全并行執(zhí)行的部分。

n就是可用的執(zhí)行單元的數(shù)目(處理器或者物理核心)。

根據(jù)這個(gè)公式,如果你有一個(gè)僅有50%(P = 0.5)的工作需要并行執(zhí)行的算法,那么在雙核微處理器可以獲得的最大速度是1.33倍。圖1-8闡述了一個(gè)擁有1000個(gè)工作單元的算法分解成500個(gè)串行工作的單元和500個(gè)并行工作的單元。如果串行算法的執(zhí)行完成需要1000秒,那么這個(gè)有部分并行代碼的新版本的執(zhí)行時(shí)間不會(huì)少于750秒。

Maximum speedup (in times) = 1 / ((1 - 0.50) + (0.50 / 2)) = 1.33x

圖 1-8同樣的算法在八核微處理器上最大速度也不會(huì)超過(guò)1.77倍。因此,這些物理核心將使執(zhí)行代碼的時(shí)間不會(huì)少于562.5秒。

Maximum speedup (in times) = 1 / ((1 - 0.50) + (0.50 / 8)) = 1.77x

圖 1-9 展示了同一算法在擁有不同數(shù)目(1-16)物理核心的微處理器上的最大速度。正如你所看到的,執(zhí)行的速度并不是一條直線(xiàn),隨著內(nèi)核數(shù)目的增多會(huì)浪費(fèi)一些處理能力。圖1-10展示了執(zhí)行一個(gè)有90%代碼可以并行執(zhí)行的相同算法的相同信息。事實(shí)上,90%的并行是一個(gè)大的優(yōu)勢(shì),但是帶有16個(gè)核心的微處理器僅僅提速6.4倍。

Maximum speedup (in times) = 1 / ((1 - 0.90) + (0.90 / 16)) = 6.40x

圖 1-9

圖 1-10

Amdabl定律考慮了物理核心數(shù)量的改變,但是并沒(méi)有考慮到你可以向現(xiàn)有應(yīng)用程序添加潛在的新特性來(lái)利用額外的并發(fā)處理能力。例如,當(dāng)你在多余三個(gè)核心的處理器上運(yùn)行其他并不能大大改善性能的算法,你可以創(chuàng)建新的算法利用這些額外的內(nèi)核。你可以創(chuàng)建考慮了不同并發(fā)場(chǎng)景的設(shè)計(jì)來(lái)減少Amdabl定律的影響。程序也必須考慮進(jìn)像硬件所提供的的新的能力。

考慮Gustafson定律

John Gustafson注意到amdahl定律將算法視為固定不變的,但是考慮了運(yùn)行他們的硬件。因此,他在1988年對(duì)這個(gè)定律進(jìn)行了重新的定義。他認(rèn)為速度的測(cè)量應(yīng)該以相對(duì)處理器的數(shù)目的問(wèn)題的規(guī)模計(jì)算,而不是任務(wù)問(wèn)題是固定的大小。當(dāng)硬件提供的并發(fā)處理能力增強(qiáng)時(shí),問(wèn)題的負(fù)載就會(huì)縮小變化。

Gustafson定律提供了一下的公式,它關(guān)注問(wèn)題的大小來(lái)測(cè)量可以在固定時(shí)間內(nèi)完成的工作單元的數(shù)目:

Total work (in units) = S + (N × P)

S代表串行順序執(zhí)行的工作單元。

P代表可以完全并行執(zhí)行的工作單元的數(shù)目。

N代表可用的處理器或者物理核心的數(shù)目。

你可以想象一個(gè)問(wèn)題是有50個(gè)串行執(zhí)行的工作單元組成。這個(gè)工作也可以調(diào)度每個(gè)可用核心并行執(zhí)行50個(gè)工作單元。如果你有一個(gè)雙核的處理器,最大的工作單元的數(shù)目將是150個(gè)單元。

Total work (in units) = 50 + (2 × 50) = 150 units of work

圖1-11闡釋了一個(gè)擁有50個(gè)串行執(zhí)行工作單元的算法和一個(gè)并行執(zhí)行部分。并行部分的測(cè)量是根據(jù)物理核心的數(shù)目計(jì)算的。以這種方式,并行部分能夠處理并發(fā)的50個(gè)工作單元。并行部分的負(fù)載會(huì)隨著可用核心的數(shù)目增加。如果并行部分能夠提供額外的工作單元,這種算法就能夠在盡可能少的時(shí)間里產(chǎn)生更多的數(shù)據(jù)。相同的算法可以運(yùn)行在一個(gè)帶有八個(gè)物理核心的微處理器上。在這種場(chǎng)景中,那么使用與前邊例子相同的時(shí)間能夠處理450個(gè)工作單元。

Total work (in units) = 50 + (8 × 50) = 450 units of work

圖 1-11

 

圖1-12展示了同一個(gè)算法的速度隨著物理核心(1-16)的數(shù)目的變化。這個(gè)速度是在增加核心數(shù)目的時(shí)候提供了足夠的并行執(zhí)行的工作單元的。你可以看到,這個(gè)速度要不運(yùn)用amdahl定律的結(jié)果要好的多。圖1-13展示了根據(jù)可用的物理核心的數(shù)目(1-32)需要的工作單元的總數(shù)。

圖1-14展示了很多算法組成了串行執(zhí)行和并發(fā)執(zhí)行部分的一些工作單元。并行部分已可用內(nèi)核的增加作為標(biāo)準(zhǔn)計(jì)量。當(dāng)并行部分執(zhí)行更多工作單元時(shí),此時(shí)串行執(zhí)行部分的影響也會(huì)減小。在這種情況下,有必要計(jì)算并行和串行執(zhí)行的總單元數(shù)目,然后將他們應(yīng)用到給定的公式來(lái)計(jì)算在八核處理器中所有的工作任務(wù)。

Total sequential work (in units) = 25 + 150 + 100 + 150 = 425 units of work

Total parallel unit of work (in units) = 50 + 200 + 300 = 550 units of work

Total work (in units) = 425 + (8 × 550) = 4,825 units of work

圖 1-12

 

圖 1-13

 

圖 1-14

原文鏈接:http://www.cnblogs.com/wufengtinghai/archive/2012/06/04/2533551.html

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2013-11-12 10:09:03

編程文化

2025-02-26 03:00:00

2023-08-16 11:39:19

高并發(fā)調(diào)優(yōu)

2024-02-02 18:29:54

C++線(xiàn)程編程

2024-02-26 08:33:51

并發(fā)編程活躍性安全性

2022-08-21 07:30:55

程序并發(fā)Golang編碼

2021-01-13 05:27:02

服務(wù)器性能高并發(fā)

2023-08-25 09:36:43

Java編程

2023-11-08 09:36:01

Java編程

2023-06-30 08:27:20

2023-07-03 09:59:00

并發(fā)編程并發(fā)容器

2019-08-01 09:27:11

半導(dǎo)體技術(shù)定律

2010-10-14 10:43:43

編程

2025-06-17 09:32:15

2023-05-22 09:27:11

GMPGolang

2023-08-21 07:34:37

GolangGMP

2019-06-11 09:49:25

2017-09-19 14:53:37

Java并發(fā)編程并發(fā)代碼設(shè)計(jì)

2011-12-12 11:16:02

iOS并發(fā)編程

2022-10-17 08:07:13

Go 語(yǔ)言并發(fā)編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 美女视频久久 | 国产在线一区二区三区 | 国产精品一区在线观看 | 91精品国产欧美一区二区 | 精品国产伦一区二区三区观看体验 | 久久亚洲国产 | 欧美在线视频网 | 亚洲天堂成人在线视频 | 99久久婷婷国产亚洲终合精品 | 一区二区三区在线播放 | 黑人中文字幕一区二区三区 | 国偷自产av一区二区三区 | 福利久久 | 国产午夜亚洲精品不卡 | 日韩在线欧美 | 欧美日韩精品久久久免费观看 | www久久国产| 国产成人99av超碰超爽 | 久久专区| 国产91精品久久久久久久网曝门 | 天天av天天好逼 | 二区三区视频 | 欧美性久久| 在线看亚洲 | 色综合一区二区 | av免费网站在线观看 | 久久精品久久久久久 | 欧美福利三区 | 免费精品一区 | 中文字幕第一页在线 | 日韩在线精品 | 久久y| 亚洲综合一区二区三区 | 超碰免费观看 | 成人午夜网| 99这里只有精品视频 | 91av免费观看| av电影一区二区 | 久久精品国产一区二区电影 | 浮生影院免费观看中文版 | av片在线观看 |