CUDA( ) CUDA學習背景 開發環境安裝

2021-09-19 16:21:12 字數 3063 閱讀 4992

目標:

了解平行計算正在發揮越來越重要作用

了解gpu計算和cuda發展歷程

了解一些通過使用cuda c而獲得成功的應用程式

配置好編譯cuda c**的環境

目錄

一、學習背景

cpu效能提公升歷史:

gpu發展歷史:

cuda發展歷史:

cuda的應用:

二、開發環境安裝

開發環境:

支援cuda的圖形處理器:

nvidia裝置驅動程式:

cuda開發工具箱:

標準的c編輯器:

三、小結

發展階段一:cpu時鐘頻率

問題:cpu執行時鐘頻率作為提公升計算機效能的方法已經不再相對穩定的提公升。

發展:早期1mhz -> 近代1ghz ~ 4ghz

瓶頸:隨著功耗與發熱的急劇公升高以及電晶體的大小接近極限等積體電路元器件中存在的各種嚴重限制,已經無法在現有的架構上通過提高處理器時鐘頻率來提公升效能,研究人員和製造商們開始尋求其他方式。

發展階段二:cpu核數量的提公升,即多核革命(multicore revolution)

發展:3核、4核、6核以及8核的cpu。

基本發展過程:

1980s:圖形介面作業系統windows的普及

1990s:消費者應用程式中3d圖形技術的需求快速增長,如遊戲、製造商發布圖形加速器卡。

設計初衷:加速應用程式中的圖形繪製運算,程式設計師通過opengl或者directx等api來訪問gpu。

缺陷:要將資料儲存在圖形紋理中並呼叫opengl.directx函式來執行計算,還要使用特殊的圖形程式語言--著色語言(shading language)來編寫這些計算。即:程式設計人員要學習計算機圖形學和著色語言、並考慮嚴格的資源限制和程式設計限制。

發展:早期gpu架構:計算資源分為頂點著色器和畫素著色器

cuda架構gpu:包含統一的著色流水線、使得執行通用計算的程式能夠對晶元上的每個alu(arithmetic logic unit)進行排列,確保滿足ieee單精度浮點數**算的徐企鵝,並且可以使用裁剪後的指令集來執行通用計算,而不是僅限於執行圖形計算。

產品:geforce 8800 gtx是第乙個基於nvida的cuda架構構件的gpu。隨後,nvida gpu是基於cuda架構而構建的,即將cuda架構視為nvidia構建gpu的模式。

目的:使用者不再需要了解opengl 或者 directx圖形程式設計結構,減輕早期gpu計算中存在的限制,即不僅能完成傳統的圖形渲染任務,又能完成通用計算任務。

發展:nvidia採取工業標準的c語言,並且增加部分關鍵字來支援cuda架構的特殊功能。並且公布編譯器來編譯cuda c語言,cuda c也就成為了第一款專門由gpu公司設計的程式語言,用於在gpu上編寫通用計算。

醫學影象:將手機到的超聲波資料轉換為3d影象時需要執行非常耗時的計算,cuda幫助快速獲得高畫質三維成像。

計算流體力學:精確模擬裝置周圍的空氣和流體的複雜運動。

環境科學:基於gpu加速的模擬軟體,如hoomd實現的表面活性劑互動模擬效能是之前平台的16倍。將複雜模擬的計算時間從數個星期減少為幾個小時。

小結:

計算機業界處於平行計算的革命中,nvidia的cuda c成為實現平行計算的最成功語言之一。

支援cuda的圖形處理器、nvidia裝置驅動程式、cuda開發工具箱、標準c編輯器

2006發布的geforce 8800 gtx以來,nvidia推出的每款gpu都能支援cuda。

nvidia提供系統軟體來實現應用程式與支援cuda的硬體之間的通訊。安裝nvidia gpu,就已經安裝好了這些軟體,要確保更新的驅動程式

cuda c應用程式將在兩個不同的處理器上執行計算,因此需要兩個編輯器,其中乙個編輯器為gpu編譯**,另乙個為cpu編譯**。nvidia提供了編譯gpu**的編譯器,「cuda toolkit」,與nvidia裝置驅動程式一樣。

後續有專門補充。

cpu編輯器。

具體安裝步驟請參考其他博主的安裝步驟,後續可能會出乙個完整的環境配置哈。

筆者的windows配置環境如下:

windows10 + cuda8.0 + visual studio 2015

注:筆者在visual studio 2017上報了乙個錯誤,嘗試各種方法無法得到解決,可能是vs不夠支援的問題,故直接放棄2017。

另外,建議安裝2015企業版或者專業版

__syncthreads(); is undefined need a help
筆者的linux配置環境如下:

wlsh@wlsh-thinkstation:/usr/local/cuda/lib64$ cat /etc/issue

ubuntu 16.04.2 lts \n \l

wlsh@wlsh-thinkstation:/usr/local/cuda/lib64$ gcc --version

gcc (ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

this is free software; see the source for copying conditions. there is no

warranty; not even for merchantability or fitness for a particular purpose.

wlsh@wlsh-thinkstation:/usr/local/cuda/lib64$ nvcc --version

nvcc: nvidia (r) cuda compiler driver

built on fri_feb__8_19:08:17_pst_2019

cuda compilation tools, release 10.1, v10.1.105

截至目前,已經安裝好cuda c的開發環境。此時我們已經可以編譯/執行 nvidia gpu computing skd示例**了

Eclipse JBoss MySQL開發環境設定

j2ee是很好的。作為開發環境,如果採用經典配置 jbuilder weblogic oracle,自是得心應手,但 是驚人的。此配置主要是針對大型或超大型應用,硬體要求也很高,針對國內以中小型應用為主的現況,不作推薦。雖然國內開發者早已習慣了d版,但筆者以為還是防患於未然,應盡早加入opensou...

Hyperledger Fabric 開發環境安裝

hyperledger fabric 開發環境安裝不算太複雜,只需要按照本文的步驟進行,相信一定可以的。首先通過以下方式更新apt索引 sudo apt get update新增docker的官方gpg金鑰 curl fssl sudo apt key add 將docker儲存庫新增到apt源,d...

Silverlight 2 0學習筆記 開發環境

對於silverlight的程式設計,實際上乙個文字編輯器就可以滿足要求了,但是使用真實的開發環境是可以大幅提高生產率的,目前最好的選擇是微軟提供的開發工具,visual studio 2008和免費的visual web developer express edition都可以滿足開發要求,但是使...