- GPU編程實(shí)戰(zhàn)(基于Python和CUDA)
- (美)布萊恩·圖奧邁寧
- 919字
- 2022-12-20 18:30:47
第1章 為什么要學(xué)習(xí)GPU編程
事實(shí)表明,除了用于對(duì)視頻游戲進(jìn)行圖形渲染,圖形處理單元(GPU)還能為普通消費(fèi)者提供一種進(jìn)行大規(guī)模并行計(jì)算的捷徑。現(xiàn)在,人們只要從當(dāng)?shù)氐纳痰曩?gòu)買(mǎi)一塊價(jià)值2000美元的現(xiàn)代GPU,并將其插入家中的PC,就能輕松獲得強(qiáng)大的算力——在5年或10年前,只有頂級(jí)的企業(yè)和大學(xué)的超級(jí)計(jì)算實(shí)驗(yàn)室才有這種算力。近年來(lái),GPU的這種開(kāi)放的可及性已經(jīng)在很多方面顯現(xiàn)出來(lái)。實(shí)際上,我們只要留意一下新聞就可以發(fā)現(xiàn)——加密貨幣礦工使用GPU挖掘比特幣等數(shù)字貨幣,遺傳學(xué)家和生物學(xué)家使用GPU進(jìn)行DNA分析和研究,物理學(xué)家和數(shù)學(xué)家使用GPU進(jìn)行大規(guī)模的模擬,人工智能研究人員通過(guò)編寫(xiě)GPU代碼來(lái)撰寫(xiě)劇本及創(chuàng)作音樂(lè),谷歌和臉書(shū)等大型互聯(lián)網(wǎng)公司使用帶有GPU的服務(wù)器群來(lái)完成大規(guī)模的機(jī)器學(xué)習(xí)任務(wù)……類(lèi)似的例子簡(jiǎn)直不勝枚舉。
本書(shū)的編寫(xiě)初衷,就是幫助你快速掌握GPU編程。這樣,無(wú)論最終目標(biāo)是什么,你都可以盡快用上GPU的強(qiáng)大算力。
注意,本書(shū)旨在為你介紹GPU編程的核心要領(lǐng),而不是贅述復(fù)雜的技術(shù)細(xì)節(jié)及GPU的工作原理。第12章會(huì)列舉更多的資源,以幫助你了解細(xì)分,進(jìn)而為學(xué)到的GPU新知識(shí)找到用武之地。在本書(shū)中,我們將使用CUDA。CUDA是NVIDIA公司的通用GPU(General-Purpose GPU,GPGPU)編程框架,早在2007年就有了第一個(gè)版本。CUDA是NVIDIA GPU的專有系統(tǒng),是一個(gè)成熟、穩(wěn)定的平臺(tái),使用起來(lái)比較方便,并提供了一套無(wú)與倫比的第一方數(shù)學(xué)加速和人工智能相關(guān)的代碼庫(kù)。在安裝和集成方面,CUDA也是最便捷的。
目前CUDA編程領(lǐng)域出現(xiàn)了許多現(xiàn)成的標(biāo)準(zhǔn)化Python庫(kù),如PyCUDA和Scikit-CUDA,讓從事GPU編程的程序員更容易上手。基于上述原因,我們?cè)诒緯?shū)中選用了CUDA。
CUDA的發(fā)音通常是coo-duh,而非C-U-D-A!CUDA最初代表的是Compute Unified Device Architecture(計(jì)算統(tǒng)一設(shè)備架構(gòu)),但英偉達(dá)公司已經(jīng)放棄了這個(gè)首字母縮寫(xiě)詞的初始含義,轉(zhuǎn)而將CUDA作為全大寫(xiě)的專有名稱來(lái)使用。
現(xiàn)在,我們先介紹阿姆達(dá)爾定律,由此開(kāi)始GPU編程之旅。
阿姆達(dá)爾定律是一種簡(jiǎn)單而有效的方法,用于估計(jì)通過(guò)將程序或算法轉(zhuǎn)移到GPU上可能獲得的速度提升,進(jìn)而幫助我們判斷是否有必要通過(guò)重寫(xiě)代碼利用GPU提升程序的性能。在此之后,我們將簡(jiǎn)要學(xué)習(xí)如何使用cProfile模塊分析Python代碼的運(yùn)行情況,以找到代碼的瓶頸。
在本章中,我們將介紹下列主題:
● 阿姆達(dá)爾定律;
● 將阿姆達(dá)爾定律應(yīng)用到代碼中;
● 使用cProfile模塊對(duì)Python代碼進(jìn)行簡(jiǎn)單的性能分析。
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- Mastering Zabbix(Second Edition)
- Visual FoxPro程序設(shè)計(jì)教程
- jQuery EasyUI網(wǎng)站開(kāi)發(fā)實(shí)戰(zhàn)
- Podman實(shí)戰(zhàn)
- Interactive Applications Using Matplotlib
- Ext JS 4 Web Application Development Cookbook
- 劍指MySQL:架構(gòu)、調(diào)優(yōu)與運(yùn)維
- Couchbase Essentials
- Kubernetes進(jìn)階實(shí)戰(zhàn)
- Orleans:構(gòu)建高性能分布式Actor服務(wù)
- Exploring SE for Android
- SQL Server實(shí)例教程(2008版)
- 量子計(jì)算機(jī)編程:從入門(mén)到實(shí)踐
- Java服務(wù)端研發(fā)知識(shí)圖譜