智能計(jì)算系統(tǒng):從深度學(xué)習(xí)到大模型 第2版課件 6、第六章-面向深度學(xué)習(xí)的處理器原理_第1頁
智能計(jì)算系統(tǒng):從深度學(xué)習(xí)到大模型 第2版課件 6、第六章-面向深度學(xué)習(xí)的處理器原理_第2頁
智能計(jì)算系統(tǒng):從深度學(xué)習(xí)到大模型 第2版課件 6、第六章-面向深度學(xué)習(xí)的處理器原理_第3頁
智能計(jì)算系統(tǒng):從深度學(xué)習(xí)到大模型 第2版課件 6、第六章-面向深度學(xué)習(xí)的處理器原理_第4頁
智能計(jì)算系統(tǒng):從深度學(xué)習(xí)到大模型 第2版課件 6、第六章-面向深度學(xué)習(xí)的處理器原理_第5頁
已閱讀5頁,還剩109頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

智能計(jì)算系統(tǒng)

第六章面向深度學(xué)習(xí)的

處理器原理中國科學(xué)院軟件研究所李玲研究員liling@運(yùn)行輸入輸出建模實(shí)現(xiàn)運(yùn)行2用來處理智能任務(wù)的處理器可以是CPU、GPU、FPGA等也可以是專用的深度學(xué)習(xí)處理器(DLP)3智能計(jì)算系統(tǒng)中的處理器提綱通用處理器向量處理器深度學(xué)習(xí)處理器大規(guī)模深度學(xué)習(xí)處理器總結(jié)4為什么選用通用處理器?普及:每臺(tái)計(jì)算設(shè)備都包含CPU廉價(jià):1分錢獲得完備的處理能力靈活:可與其他任何任務(wù)共享計(jì)算硬件適用小模型、少量數(shù)據(jù)、成本敏感的推理場(chǎng)景5通用處理器6算法執(zhí)行算子程序指令執(zhí)行7算法執(zhí)行算子程序指令執(zhí)行for(co=0;co<Co;co++)for(yo=0;yo<Ho;yo++)for(xo=0;xo<Wo;xo++){output[co][yo][xo]=bias[co];

for(yk=0;yk<Hk;yk++)for(xk=0;xk<Wk;xk++)for(ci=0;ci<Ci;ci++){output[co][yo][xo]+=weight[co][ci][yk][xk]

*input[ci][yo*stride+yk][xo*stride+xk];}}8算法執(zhí)行算子程序指令執(zhí)行.L2:cmpDWORDPTR[rsp-20],eax

jle

.L1

imulrdx,rax,27

movQWORDPTR[rsp-40],r10

xorr9d,r9d

movQWORDPTR[rsp-32],rdx

xoredx,edx

movDWORDPTR[rsp-24],edx.L12:movedi,DWORDPTR[rsp-16]

cmpDWORDPTR[rsp-24],edi

jge

.L16

movrdx,QWORDPTR[rsp-40]

xorebx,ebx

xorr11d,r11d.L10:movecx,DWORDPTR[rsp-12]

cmpr11d,ecx

jge

.L17

movssxmm0,DWORDPTRbias[0+rax*4]

movr12,QWORDPTR[rsp-32]

xorr8d,r8d

movssDWORDPTR[rdx],xmm0.L3:movedi,DWORDPTR[rsp-8]

cmpr8d,edi

jge

.L7

leaecx,[r8+r9]

learbp,weight[0+r12*4]

xoredi,edi

movsxrcx,ecx

imulrcx,rcx,224.L8:movr14d,DWORDPTR[rsp-4]

cmpedi,r14d

jge

.L5

lear13d,[rdi+rbx]

movr14,rbp

movsxr13,r13d

addr13,rcx

lear15,input[0+r13*4]

xorr13d,r13d.L6:cmpr13d,DWORDPTR[rsp+56]

jge

.L18

movssxmm0,DWORDPTR[r14]

mulssxmm0,DWORDPTR[r15]

incr13d

addr14,36

addssxmm0,DWORDPTR[rdx]

addr15,200704

movssDWORDPTR[rdx],xmm0

jmp

.L6.L18:incedi

addrbp,4

jmp

.L8.L5:incr8d

addr12,3

jmp

.L3.L7:incr11d

addrdx,4

addebx,esi

jmp

.L10.L17:incDWORDPTR[rsp-24]

addr9d,esi

addQWORDPTR[rsp-40],888

jmp

.L12.L16:incrax

addr10,197136

jmp

.L2.L1:for(co=0;co<Co;co++)for(yo=0;yo<Ho;yo++)for(xo=0;xo<Wo;xo++){output[co][yo][xo]=bias[co];

for(yk=0;yk<Hk;yk++)

for(xk=0;xk<Wk;xk++)

for(ci=0;ci<Ci;ci++){output[co][yo][xo]+=weight[co][ci][yk][xk]

*

input[ci][yo*stride+yk][xo*stride+xk];}}9算法執(zhí)行算子程序指令執(zhí)行64394424EC0F8E00010000486BD01B4C895424D84531C948895424E031D2895424E88B7C24F0397C24E80F8DCC000000488B5424D831DB4531DB8B4C24F44139CB0F8DA0000000F30F100485000000004C8B6424E04531C0F30F11028B7C24F84139F87D74438D0C084A8D2CA50000000031FF4863C94869C9E0000000448B7424FC4439F77D49448D2C1F4989EE4D63ED4901CD4E8D3CAD000000004531ED443B6C24387D22F3410F1006F3410F590741FFC54983C624F30F58024981C700100300F30F1102EBD7FFC74883C504EBAD41FFC04983C403EB8341FFC34883C20401F3E953FFFFFFFF4424E84101F148814424D878030000E926FFFFFF48FFC04981C210020300E9F6FEFFFF10真實(shí)的處理器例子5%×8=39%2.4%用于運(yùn)算的芯片面積不到1%!1930年代~1940年代1936年AlanTuring定義了圖靈機(jī)和可計(jì)算性(computability)M.,Turing,OnComputableNumbers,withanApplicationtotheEntscheidungsproblem,ProceedingsoftheLondonMathematicalSociety,1936.早期代表性計(jì)算機(jī)1944美國HarvardMark

I1945美國ENIAC世界上第二臺(tái)電子計(jì)算機(jī)&第一臺(tái)通用計(jì)算機(jī)1942美國ABC世界上第一臺(tái)電子計(jì)算機(jī)1940年代~1950年代存儲(chǔ)程序計(jì)算機(jī)編程:機(jī)器語言

匯編語言匯編器將符號(hào)代碼和內(nèi)存地址轉(zhuǎn)換為機(jī)器代碼EDVAC,馮諾依曼架構(gòu)1944-1951英國ACE(Turing)1946-1950103機(jī),1958年中國第一臺(tái)通用電子計(jì)算機(jī)IBM704,第一臺(tái)具有浮點(diǎn)運(yùn)算硬件的量產(chǎn)計(jì)算機(jī),195413處理器的演進(jìn)/mp/a12970.html馮·諾依曼結(jié)構(gòu)包含控制器、運(yùn)算器、存儲(chǔ)器和輸入/輸出?!按鎯?chǔ)程序”:指令從主存儲(chǔ)器中取出14通用處理器結(jié)構(gòu)中央控制器(CC)中央運(yùn)算器(CA)“中央”(C)主存儲(chǔ)器(M)外部存儲(chǔ)器(R)輸入(I)輸出(O)馮·諾依曼結(jié)構(gòu)包含控制器、運(yùn)算器、存儲(chǔ)器和輸入/輸出?!按鎯?chǔ)程序”:指令從主存儲(chǔ)器中取出15通用處理器結(jié)構(gòu)“中央”(C)16通用處理器結(jié)構(gòu)高速緩存用來彌補(bǔ)主存和運(yùn)算器之間的“剪刀差”。自動(dòng)暫存最近讀取的數(shù)據(jù),以備不久之后再次使用通常使用SRAM實(shí)現(xiàn)17高速緩存哈佛結(jié)構(gòu)指令緩存和數(shù)據(jù)緩存分離允許同時(shí)進(jìn)行取指和訪存,互不干擾18通用處理器結(jié)構(gòu)精簡指令集結(jié)構(gòu)(RISC)關(guān)鍵原則:通過專門的load/store指令訪存實(shí)踐中,處理器內(nèi)部將復(fù)雜指令首先譯為RISC微碼19通用處理器結(jié)構(gòu)分支指令:由運(yùn)算器計(jì)算出下一條指令的地址分支指令計(jì)算完成前,暫停取指!20通用處理器結(jié)構(gòu)多發(fā)射:多條互不相關(guān)的指令可以同時(shí)發(fā)射可能同時(shí)利用多個(gè)運(yùn)算器21通用處理器結(jié)構(gòu)示例程序:r1←r2×r3r4←r1+r4地址生成單元:專用于計(jì)算訪存地址的運(yùn)算器可以高效支持多種尋址模式22通用處理器結(jié)構(gòu)寄存器重命名:將寄存器編號(hào)與物理寄存器相分離消除偽相關(guān),提高指令同時(shí)執(zhí)行的機(jī)會(huì)23通用處理器結(jié)構(gòu)示例程序:r1←r2×r3r2←r3+r4改為:r1←r2×r3r5←r3+r4亂序執(zhí)行,有序提交實(shí)現(xiàn)精確例外,可以撤銷已執(zhí)行的指令24通用處理器結(jié)構(gòu)示例程序:r1←[r2]r1←r1+1r3←[r2+4]寫入/寫出隊(duì)列:暫存已執(zhí)行、未提交的訪存指令可以連續(xù)發(fā)起load/store指令,未提交前可以撤銷25通用處理器結(jié)構(gòu)數(shù)據(jù)前遞:上一指令運(yùn)算結(jié)果直接送入下一指令運(yùn)算單元可以省去連續(xù)運(yùn)算時(shí)反復(fù)寫入、讀出寄存器的動(dòng)作26通用處理器結(jié)構(gòu)示例程序:r1←r2×r3r4←r1+r4分支預(yù)測(cè):未確定跳轉(zhuǎn)方向時(shí),按猜測(cè)方向投機(jī)執(zhí)行預(yù)測(cè)正確時(shí):減少等待時(shí)間,提高了流水線效率預(yù)測(cè)錯(cuò)誤時(shí):不予提交,撤銷錯(cuò)誤執(zhí)行的指令27通用處理器結(jié)構(gòu)運(yùn)算只占1%?以標(biāo)量作為基本運(yùn)算粒度需要更多指令來執(zhí)行任意指令間都潛在依賴,控制很復(fù)雜“內(nèi)存墻”現(xiàn)象越來越大、越來越多層次的緩存28通用處理器結(jié)構(gòu)29優(yōu)化機(jī)會(huì).L2:cmpDWORDPTR[rsp-20],eax

jle

.L1

imulrdx,rax,27

movQWORDPTR[rsp-40],r10

xorr9d,r9d

movQWORDPTR[rsp-32],rdx

xoredx,edx

movDWORDPTR[rsp-24],edx.L12:movedi,DWORDPTR[rsp-16]

cmpDWORDPTR[rsp-24],edi

jge

.L16

movrdx,QWORDPTR[rsp-40]

xorebx,ebx

xorr11d,r11d.L10:movecx,DWORDPTR[rsp-12]

cmpr11d,ecx

jge

.L17

movssxmm0,DWORDPTRbias[0+rax*4]

movr12,QWORDPTR[rsp-32]

xorr8d,r8d

movssDWORDPTR[rdx],xmm0.L3:movedi,DWORDPTR[rsp-8]

cmpr8d,edi

jge

.L7

leaecx,[r8+r9]

learbp,weight[0+r12*4]

xoredi,edi

movsxrcx,ecx

imulrcx,rcx,224.L8:movr14d,DWORDPTR[rsp-4]

cmpedi,r14d

jge

.L5

lear13d,[rdi+rbx]

movr14,rbp

movsxr13,r13d

addr13,rcx

lear15,input[0+r13*4]

xorr13d,r13d.L6:cmpr13d,DWORDPTR[rsp+56]

jge

.L18

movssxmm0,DWORDPTR[r14]

mulssxmm0,DWORDPTR[r15]

incr13d

addr14,36

addssxmm0,DWORDPTR[rdx]

addr15,200704

movssDWORDPTR[rdx],xmm0

jmp

.L6.L18:incedi

addrbp,4

jmp

.L8.L5:incr8d

addr12,3

jmp

.L3.L7:incr11d

addrdx,4

addebx,esi

jmp

.L10.L17:incDWORDPTR[rsp-24]

addr9d,esi

addQWORDPTR[rsp-40],888

jmp

.L12.L16:incrax

addr10,197136

jmp

.L2.L1:控制尋址計(jì)算控制和尋址開銷超過了實(shí)際的計(jì)算!降低控制開銷:循環(huán)展開(Loopunrolling)30控制、尋址降低控制開銷:循環(huán)展開(Loopunrolling)降低尋址開銷:強(qiáng)度削減(Strengthreduction)31控制、尋址降低控制開銷:循環(huán)展開(Loopunrolling)降低尋址開銷:強(qiáng)度削減(Strengthreduction)均為通用技巧,現(xiàn)代編譯器已經(jīng)盡力而為。沒有非常有效的優(yōu)化方法!為什么?32控制、尋址降低控制開銷:循環(huán)展開(Loopunrolling)降低尋址開銷:強(qiáng)度削減(Strengthreduction)均為通用技巧,現(xiàn)代編譯器已經(jīng)盡力而為。沒有非常有效的優(yōu)化方法!通用處理器為通用性而設(shè)計(jì),深度學(xué)習(xí)只是其中一種應(yīng)用;雖然深度學(xué)習(xí)程序行為規(guī)整,仍需較多指令才能定義清晰。33控制、尋址降低控制開銷:循環(huán)展開(Loopunrolling)降低尋址開銷:強(qiáng)度削減(Strengthreduction)均為通用技巧,現(xiàn)代編譯器已經(jīng)盡力而為。沒有非常有效的優(yōu)化方法!通用處理器為通用性而設(shè)計(jì),深度學(xué)習(xí)只是其中一種應(yīng)用;雖然深度學(xué)習(xí)程序行為規(guī)整,仍需較多指令才能定義清晰。每訪問一個(gè)數(shù)據(jù),都必須計(jì)算其地址,并控制循環(huán)條件!34控制、尋址容量失效:循環(huán)訪問數(shù)據(jù)超過緩存容量,LRU緩存失效35訪存緩存容量32字4×4方陣5×5方陣7×7方陣6×6方陣8×8方陣訪問放大:逐字訪問不命中時(shí),緩存以行為單位替換高效高效失效失效失效緩存行4字緩存容量32字8×8方陣緩存訪問量64字內(nèi)存訪問量64字9×9方陣緩存訪問量81字內(nèi)存訪問量

324字36訪存臨界步幅:條帶狀訪問使組相聯(lián)緩存提前遭遇容量失效緩存行4字,容量32行,4路組相聯(lián)15×15方陣16×16方陣17×17方陣命中率79%命中率45%命中率82%37訪存?zhèn)喂蚕恚簝珊私惶嫘薷耐恍?,交替無效對(duì)方本地緩存緩存行4字,一級(jí)緩存容量8行,二級(jí)緩存容量16行8×8方陣6×6方陣命中率92%命中率28%緩存的復(fù)雜行為給優(yōu)化帶來挑戰(zhàn)!一級(jí)緩存(本地)二級(jí)緩存(共享)分塊(tiling):將運(yùn)算分解至固定尺寸的區(qū)塊處理38訪存優(yōu)化命中率56%命中率78%ABCABCC=ABC=AB不分塊:B

矩陣發(fā)生容量失效分為3×3區(qū)塊:避免了前述各項(xiàng)緩存問題程序更復(fù)雜三重循環(huán)六重循環(huán):三重循環(huán)遍歷各個(gè)分塊分塊內(nèi)正常運(yùn)算仍需三重通用處理器上實(shí)現(xiàn)矩陣乘法,這兩種實(shí)現(xiàn)方式:遞歸(分治法)誰更高效?39訪存優(yōu)化迭代(三重循環(huán))

else:

returnA*B通用處理器上實(shí)現(xiàn)矩乘,這兩種實(shí)現(xiàn)方式:遞歸(分治法)誰更高效?沒有定論!需要通過測(cè)試來確認(rèn)。40訪存優(yōu)化迭代(三重循環(huán))

else:

returnA*B遞歸優(yōu)勢(shì):相當(dāng)于實(shí)現(xiàn)了不同尺寸的分塊,緩存友好;可以采用Strassen等快速算法!迭代優(yōu)勢(shì):程序簡單;控制、尋址開銷較低。通用處理器獨(dú)特的優(yōu)勢(shì):普及、廉價(jià)、靈活缺陷:較高的控制、尋址開銷;復(fù)雜的訪存優(yōu)化策略??刂?、尋址開銷僅憑軟件優(yōu)化難以改善。如何從架構(gòu)上改善?41討論通用處理器獨(dú)特的優(yōu)勢(shì):普及、廉價(jià)、靈活缺陷:較高的控制、尋址開銷;復(fù)雜的訪存優(yōu)化策略??刂?、尋址開銷僅憑軟件優(yōu)化難以改善。如何從架構(gòu)上改善?觀察:深度學(xué)習(xí)處理數(shù)據(jù)以向量、矩陣為主,數(shù)量較多。42討論通用處理器獨(dú)特的優(yōu)勢(shì):普及、廉價(jià)、靈活缺陷:較高的控制、尋址開銷;復(fù)雜的訪存優(yōu)化策略。控制、尋址開銷僅憑軟件優(yōu)化難以改善。如何從架構(gòu)上改善?觀察:深度學(xué)習(xí)處理數(shù)據(jù)以向量、矩陣為主,數(shù)量較多。思路:允許一條指令并行操作多個(gè)數(shù)據(jù)?43討論通用處理器獨(dú)特的優(yōu)勢(shì):普及、廉價(jià)、靈活缺陷:較高的控制、尋址開銷;復(fù)雜的訪存優(yōu)化策略??刂啤ぶ烽_銷僅憑軟件優(yōu)化難以改善。如何從架構(gòu)上改善?觀察:深度學(xué)習(xí)處理數(shù)據(jù)以向量、矩陣為主,數(shù)量較多。思路:允許一條指令并行操作多個(gè)數(shù)據(jù)?預(yù)期效果:攤薄控制和尋址開銷!44討論提綱通用處理器向量處理器深度學(xué)習(xí)處理器大規(guī)模深度學(xué)習(xí)處理器總結(jié)45來源于Flynn分類法(1972)46SIMD單指令流、單數(shù)據(jù)流(SISD)多指令流、單數(shù)據(jù)流(MISD)PE數(shù)據(jù)指令PE數(shù)據(jù)指令PEPEPEPE數(shù)據(jù)PEPE數(shù)據(jù)指令PEPEPEPE指令PEPEPE指令指令單指令流、多數(shù)據(jù)流(SIMD)多指令流、多數(shù)據(jù)流(MIMD)來源于Flynn分類法(1972)47SIMD單指令流、單數(shù)據(jù)流(SISD)多指令流、單數(shù)據(jù)流(MISD)PE數(shù)據(jù)指令PE數(shù)據(jù)指令PEPEPEPE數(shù)據(jù)PEPE數(shù)據(jù)指令PEPEPEPE指令PEPEPE指令指令單指令流、多數(shù)據(jù)流(SIMD)多指令流、多數(shù)據(jù)流(MIMD)允許一條指令并行操作多個(gè)數(shù)據(jù)48向量指令標(biāo)量指令:(虛構(gòu)的)向量指令:movss

xmm0,

DWORDPTRx[0+rax*4]addss

xmm0,

DWORDPTRy[0+rax*4]movss

DWORDPTRy[0+rax*4],xmm0inc

raxmovss

xmm0,

DWORDPTRx[0+rax*4]addss

xmm0,

DWORDPTRy[0+rax*4]movss

DWORDPTRy[0+rax*4],xmm0inc

rax ……movss

xmm0,

DWORDPTRx[0+rax*4]addss

xmm0,

DWORDPTRy[0+rax*4]movss

DWORDPTRy[0+rax*4],xmm0N遍vmov

v0,

DWORDPTRx,Nvadd

v0,

DWORDPTRy,Nvmov

DWORDPTRy,v0,

N允許一條指令并行操作多個(gè)數(shù)據(jù)49向量指令for(size_ti=0;i<n;i++)y[i]=a*x[i]+y[i];

mov

edx,DWORD

PTR

n[rip]

movss

xmm1,DWORD

PTR

a[rip]

xor

eax,eax.L2:

cmp

edx,eax

jle

.L5

movss

xmm0,DWORD

PTR

x[0+rax*4]

mulss

xmm0,xmm1

addss

xmm0,DWORD

PTR

y[0+rax*4]

movss

DWORD

PTR

y[0+rax*4],xmm0

inc

rax

jmp

.L2.L5:

mov

edx,DWORD

PTR

n[rip]

movss

xmm1,DWORD

PTR

a[rip]

vmov

v0,DWORD

PTR

x,edx

vmul

v0,xmm1,edx

vadd

v0,DWORD

PTR

y,edx

vmov

DWORD

PTR

y,v0,edx標(biāo)量程序:(虛構(gòu)的)向量程序:控制尋址計(jì)算攤薄控制和尋址開銷STAR:源自CDCSTAR-100(1970年)任意指定向量長度直接從主存讀取數(shù)據(jù)50向量指令的三種風(fēng)格vadd

DWORDPTRx,

DWORDPTRy,

Nfor(size_ti=0;i<N;i++)y[i]=x[i]+y[i];SWAR:源自Cray-1(1975年)固定向量長度使用向量寄存器mov

rax,0Loop:vmov

v0,

DWORDPTRx[0+rax*4]vmov

v1,

DWORDPTRy[0+rax*4]vadd

v0,v1,v0vmov

DWORDPTRy[0+rax*4],v0add

rax,8cmp

rax,Njl

Loop結(jié)果:Cray戰(zhàn)勝CDC為什么?單指令多線程(SIMT):源自英偉達(dá)Tesla(2006年)通過分歧執(zhí)行(diverge),一條指令流實(shí)現(xiàn)多個(gè)控制流多線程束輪轉(zhuǎn)執(zhí)行隱藏延遲51向量指令的三種風(fēng)格催生于冷戰(zhàn)期間的超算,美軍方迫切的核武器模擬需求ILLIACIV(1971,美國)CDC/Cray(Cray-1:1975,美國)“地球模擬器”(2002,日本)52歷史CPU:SIMD擴(kuò)展指令(IntelSSE/AVX,ArmNEON…)GPU:統(tǒng)一渲染管線(NVIDIACUDA,AMDCU…)也常見于各類加速器53發(fā)展以通用處理器結(jié)構(gòu)為基礎(chǔ)54向量處理器結(jié)構(gòu)以通用處理器結(jié)構(gòu)為基礎(chǔ)可以保留標(biāo)量部分,用于控制、尋址和少量標(biāo)量運(yùn)算也可以完全由向量運(yùn)算單元組成(根據(jù)應(yīng)用需求?。?5向量處理器結(jié)構(gòu)相對(duì)獨(dú)立地設(shè)計(jì)向量部分更寬的寄存器、運(yùn)算、數(shù)據(jù)通路56向量處理器結(jié)構(gòu)調(diào)度單元(向量)可以借用標(biāo)量地址生成單元,訪問向量數(shù)據(jù)57向量處理器結(jié)構(gòu)調(diào)度單元(向量)可以增加向量/標(biāo)量數(shù)據(jù)交換通路,方便控制58向量處理器結(jié)構(gòu)調(diào)度單元(向量)可以接入亂序執(zhí)行流水線當(dāng)中59向量處理器結(jié)構(gòu)調(diào)度單元(向量)60圖形處理器(GPU)結(jié)構(gòu)向量處理器的優(yōu)勢(shì):(相比標(biāo)量通用處理器)使用一條指令就可以驅(qū)動(dòng)多個(gè)運(yùn)算器,或者訪問主存中連續(xù)的一段數(shù)據(jù)控制尋址開銷攤薄針對(duì)并行應(yīng)用較為靈活缺陷:由于運(yùn)算增加,訪存瓶頸更加嚴(yán)峻61討論訪存訪存非常關(guān)鍵*62*V.Sze,Y.-H.Chen,T-J.Yang,J.Emer,“EfficientProcessingofDeepNeuralNetworks:ATutorialandSurvey”,ISCA2017

63運(yùn)算密度I/O數(shù)據(jù)量有多大?至少包含最初輸入數(shù)據(jù)+最終輸出數(shù)據(jù)64運(yùn)算密度I/O數(shù)據(jù)量有多大?至少包含最初輸入數(shù)據(jù)+最終輸出數(shù)據(jù)向量化不會(huì)改善訪存:標(biāo)量乘:1次運(yùn)算,2個(gè)輸入,1個(gè)輸出每次運(yùn)算,I/O量為3向量乘:n次運(yùn)算,2n個(gè)輸入,n個(gè)輸出平均到每個(gè)運(yùn)算上,I/O量仍為365運(yùn)算密度×ABY×A1B1Y1×A2B2Y2×A3B3Y3I/O數(shù)據(jù)量有多大?至少包含最初輸入數(shù)據(jù)+最終輸出數(shù)據(jù)向量化不會(huì)改善訪存:標(biāo)量乘:1次運(yùn)算,2個(gè)輸入,1個(gè)輸出每次運(yùn)算,I/O量為3向量乘:n次運(yùn)算,2n個(gè)輸入,n個(gè)輸出平均到每個(gè)運(yùn)算上,I/O量仍為3向量處理器需等比例增加運(yùn)算和帶寬66運(yùn)算密度×ABY×A1B1Y1×A2B2Y2×A3B3Y3隨著算法處理的數(shù)據(jù)規(guī)模逐漸增加,算法表現(xiàn)出的運(yùn)算密度也將增加。可以簡單推算的結(jié)果:標(biāo)量運(yùn)算:

向量運(yùn)算:

矩陣乘向量:

矩陣乘矩陣:67運(yùn)算密度AB×AB×=Y=YAB×=YAB×=Y

一組最常用的線性代數(shù)運(yùn)算代碼,產(chǎn)業(yè)標(biāo)準(zhǔn)(1970年代)第一代BLAS:向量操作內(nèi)積、AXPY……(1980年代中期)第二代BLAS:向量-矩陣操作矩陣乘向量……開銷有所降低(1980年代末)第三代BLAS:矩陣運(yùn)算矩陣乘……性能潛力顯著提升68基礎(chǔ)線性代數(shù)運(yùn)算庫(BLAS)一組最常用的線性代數(shù)運(yùn)算代碼,產(chǎn)業(yè)標(biāo)準(zhǔn)(1970年代)第一代BLAS:向量操作內(nèi)積、AXPY……(1980年代中期)第二代BLAS:向量-矩陣操作矩陣乘向量……開銷有所降低(1980年代末)第三代BLAS:矩陣運(yùn)算矩陣乘……性能潛力顯著提升(今天?)深度神經(jīng)網(wǎng)絡(luò)基本運(yùn)算(卷積等)具有更優(yōu)良的數(shù)據(jù)局部性?。ㄟ\(yùn)算量與I/O數(shù)據(jù)量之比)69基礎(chǔ)線性代數(shù)運(yùn)算庫(BLAS)提綱通用處理器向量處理器深度學(xué)習(xí)處理器大規(guī)模深度學(xué)習(xí)處理器總結(jié)70基本運(yùn)算單元從向量運(yùn)算擴(kuò)展到矩陣運(yùn)算71深度學(xué)習(xí)處理器(DLP)運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)控制單元向量處理器標(biāo)量通用處理器運(yùn)算單元片內(nèi)存儲(chǔ)控制單元基本運(yùn)算單元從向量運(yùn)算擴(kuò)展到矩陣運(yùn)算72深度學(xué)習(xí)處理器(DLP)運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)控制單元向量處理器片內(nèi)存儲(chǔ)控制單元深度學(xué)習(xí)處理器運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)片內(nèi)存儲(chǔ)標(biāo)量通用處理器運(yùn)算單元片內(nèi)存儲(chǔ)控制單元基本運(yùn)算單元從向量運(yùn)算擴(kuò)展到矩陣運(yùn)算73深度學(xué)習(xí)處理器(DLP)運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)控制單元向量處理器片內(nèi)存儲(chǔ)控制單元深度學(xué)習(xí)處理器運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)片內(nèi)存儲(chǔ)標(biāo)量通用處理器運(yùn)算單元片內(nèi)存儲(chǔ)控制單元運(yùn)算單元:1數(shù)據(jù)通路:2運(yùn)算單元:n數(shù)據(jù)通路:2n運(yùn)算單元:n2數(shù)據(jù)通路:3n基本運(yùn)算單元從向量運(yùn)算擴(kuò)展到矩陣運(yùn)算74深度學(xué)習(xí)處理器(DLP)運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)控制單元向量處理器片內(nèi)存儲(chǔ)控制單元深度學(xué)習(xí)處理器運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單元片內(nèi)存儲(chǔ)片內(nèi)存儲(chǔ)標(biāo)量通用處理器運(yùn)算單元片內(nèi)存儲(chǔ)控制單元運(yùn)算單元:1數(shù)據(jù)通路:2運(yùn)算單元:n數(shù)據(jù)通路:2n運(yùn)算單元:n2數(shù)據(jù)通路:3n深度學(xué)習(xí)處理器在相同帶寬下,提供更高運(yùn)算能力緩存相比便箋存儲(chǔ)75DLP結(jié)構(gòu):訪存緩存便箋面積+50%速度+23%功耗+2%編程透明需要控制4MB,7nmFinFET工藝評(píng)估深度學(xué)習(xí)訪存行為規(guī)律,更適合使用便箋存儲(chǔ)76DLP結(jié)構(gòu):控制深度學(xué)習(xí)程序控制流以計(jì)數(shù)循環(huán)為主

for(co=0;co<Co;co++)for(yo=0;yo<Ho;yo++)for(xo=0;xo<Wo;xo++){output[co][yo][xo]=bias[co];

for(yk=0;yk<Hk;yk++)for(xk=0;xk<Wk;xk++)for(ci=0;ci<Ci;ci++){output[co][yo][xo]+=weight[co][ci][yk][xk]

*input[ci][yo*stride+yk][xo*stride+xk];}}77DLP結(jié)構(gòu):控制深度學(xué)習(xí)程序控制流以計(jì)數(shù)循環(huán)為主啟發(fā):可以特別設(shè)計(jì)計(jì)數(shù)跳轉(zhuǎn)指令大多數(shù)跳轉(zhuǎn)無需分支預(yù)測(cè)for(co=0;co<Co;co++)for(yo=0;yo<Ho;yo++)for(xo=0;xo<Wo;xo++){output[co][yo][xo]=bias[co];

for(yk=0;yk<Hk;yk++)for(xk=0;xk<Wk;xk++)for(ci=0;ci<Ci;ci++){output[co][yo][xo]+=weight[co][ci][yk][xk]

*input[ci][yo*stride+yk][xo*stride+xk];}}以精簡的通用處理器結(jié)構(gòu)為基礎(chǔ)省去了分支預(yù)測(cè)器78DLP結(jié)構(gòu)取消數(shù)據(jù)緩存,I/O直連外部主存79DLP結(jié)構(gòu)添加便箋存儲(chǔ)器和直接訪存模塊(DMA)DMA:代理主存與便箋存儲(chǔ)器之間的大塊連續(xù)數(shù)據(jù)搬運(yùn)80DLP結(jié)構(gòu)添加矩陣運(yùn)算單元81DLP結(jié)構(gòu)添加矩陣指令的控制單元矩陣指令在提交隊(duì)列中,與標(biāo)量/訪存指令同步82DLP結(jié)構(gòu)83神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)/芯片的發(fā)展歷史第一次熱潮(1950年代-1960年代)1951,M.Minsky研制了神經(jīng)網(wǎng)絡(luò)模擬器SNARC1960,F(xiàn).Rosenblatt研制了神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)Mark-ISNARCMark-I84神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)/芯片的發(fā)展歷史第一次熱潮(1950年代-1960年代)第二次熱潮(1980年代-1990年代初)1989,IntelETANN1990,CNAPS1993,MANTRAI1997,預(yù)言神……1990s的神經(jīng)網(wǎng)絡(luò)處理器結(jié)構(gòu)簡單規(guī)模小85模擬電路:IntelETANN851990s的神經(jīng)網(wǎng)絡(luò)處理器86模擬電路:FPAA實(shí)現(xiàn)數(shù)字電路:CNAPS數(shù)字電路:MANTRA-I86872019201320082014201520162017國際首個(gè)深度學(xué)習(xí)處理器架構(gòu)DianNao國際首個(gè)多核深度學(xué)習(xí)處理器架構(gòu)DaDianNao國際首個(gè)深度學(xué)習(xí)處理器芯片國際首個(gè)深度學(xué)習(xí)指令集奠定寒武紀(jì)生態(tài)基礎(chǔ)近億臺(tái)手機(jī)和服務(wù)器開始集成寒武紀(jì)處理器國際上同期峰值速度最高的智能芯片MLU100AlphaGo用1202個(gè)CPU+176個(gè)GPU戰(zhàn)勝李世石Google公布其第一代深度學(xué)習(xí)處理器TPUNvidia在其V100GPU產(chǎn)品中加入深度學(xué)習(xí)加速器深度學(xué)習(xí)處理器發(fā)展第三次熱潮(2006-至今)可用于人工智能的GPUGoogleBrain貓臉識(shí)別1.6萬個(gè)CPU核訓(xùn)練數(shù)天20122018MLU270性能提升4倍首個(gè)面向深度學(xué)習(xí)的GPU架構(gòu)PascalDianNao(中科院計(jì)算所&法國INRIA,2013)TPU(Google,2016)VoltaGPU(NVIDIA,2017)88深度學(xué)習(xí)處理器樣例深度學(xué)習(xí)處理器的優(yōu)勢(shì):一條指令完成復(fù)雜的線性運(yùn)算,控制開銷低同等訪存,能達(dá)到更強(qiáng)運(yùn)算能力缺陷是什么?89討論提綱通用處理器向量處理器深度學(xué)習(xí)處理器大規(guī)模深度學(xué)習(xí)處理器總結(jié)90如何堆積更強(qiáng)的運(yùn)算能力?91DLP的規(guī)模擴(kuò)展片內(nèi)存儲(chǔ)控制單元深度學(xué)習(xí)處理器運(yùn)算單元運(yùn)算單元運(yùn)算單元運(yùn)算單

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論