gpu是什麼?
gpu是圖形處理器的英文縮寫(
graphics processing unit
),顯示卡的處理器稱為圖形處理器(gpu
),它是顯示卡的「心臟」,與cpu類似,只不過gpu是專為執行複雜的數學和幾何計算而設計的,這些計算是圖形渲染所必需的。
因為cpu 由專為順序序列處理而優化的幾個核心組成,而gpu 則由數以千計的更小、更高效的核心組成,這些核心專為同時處理多工而設計,這使得gpu作為硬體加速,成為可能。
gpu加速一般有渲染加速和運算加速兩種,前者是顯示卡的本質工作,將渲染器速度提公升完成畫面輸出,後者是通用計算領域的用法,利用gpu強大的浮點數運算能力幫助cpu進行計算。
我的程式可以用gpu加速嗎?
這裡的思想主要引用的文章,更完整的請參考這篇文章,我在此,僅僅是羅列一下文中的主要觀點。
1.平行計算
」不等於
「序列**
+並行裝置
所以我們還是要按部就班,先花個
1~2天對平行計算的基礎理論開始理解,以及對並行裝置(
gpu架構)有基本認知,然後再開始進入
cuda
或openacc
,opencl
程式設計,這樣才不會誤入歧途。如果想對平行計算有個大概的認知,可以參考
的第一章,對資料並行和任務並行有很生動的闡釋。
2.並行化的最基本工作,就是
」演算法並行化
這部分您可多參考一些別人的**,相信對您會有明顯的幫助。
3.效能提公升程度:演算法並行化程度
>>
並行**優化程度
其次,也有大部分的人將序列習慣中的條件分支(
if..then..else
或case )
大量用到並行程式設計之中,結果效能反而變得更差。這是因為不理解平行計算的核心:一致性與規整性。
平行計算的關鍵,是讓絕大部分的計算核進行「相同
」的工作,任何條件分子都會破壞工作的一致性,條件分支越複雜則一致性越差。同樣的,如果資料結構的規整度不一致,效能也會不好。 4.
平行計算只處理
「適合的部分」而非
「從頭到尾
」 有許多初學者一開始鑽入
cuda
語法與結構,將
gpu的計算核當做
cpu的控制核使用,然後將整個
cpu的
c/c++/fortran
**從頭到尾全部改寫成
cuda
函式,結果效能奇差無比。
真正合理的平行計算,是將整個應用中計算量最大的部分(可能**只佔
10%、但計算量超過
60%)轉換成並行**,交給並行處理器去計算就可以。
5.
計算效能並非只以計算核數量為衡量標準
與cpu
計算效能類似,
gpu計算核也有主頻,整體效能以
「計算核數量*主頻
」為依據。此外,影響效能另乙個關鍵因素,在於資料傳輸所消耗的時間,因此
pcie
匯流排、cpu
的qpi
頻寬、計算卡的視訊記憶體頻寬等等,也是至關重要的實際影響因素。
6.
絕對要善用
nsight
之類的專門除錯工具
平行計算會同時啟動成千上百個執行緒,其中牽扯非常多的資源衝突、資料同步等可能出錯的狀況,絕非傳統序列**用
vc設斷點、用
printf
顯示等方式能夠除錯的,所以學習
gpu程式設計請同時學習
nsight
之類除錯工具的使用
7 .遊戲卡的
sli或
crossfire
功能,於多卡計算的資料交換無關
許多人在這方面存在絕對的誤解,以為遊戲卡提供的
sli(
nvidia
)或crossfire
(amd
)是多卡計算的資料傳輸介面,其實這兩種技術與
multi-gpu
平行計算沒有任何關係,專業計算卡(
nvidia tesla
或amd firepro
)都不提供這類技術」
ps:官方網頁,並闡述了如何加速,看看自己使用的應用程式是否支援 gpu 加速:
怎麼用gpu加速?
現在還沒有正式開發過,網上了解的,可以用cuda和opencl開發.
cuda是一套軟體開發工具,支援nvidia公司生產的gpu圖形卡。如果你的程式需要提高執行的速度,並且是可並行的,cuda就是乙個非常實用和適用的開發工具。將你的程式在cuda環境改編(並行化)之後,執行的硬體平台有nvidia公司生產的gpu圖形卡,則可大幅度提高你的程式執行的效率和速度。
通用目的並行程式設計的開放式、免費標準,也是乙個統一的程式設計環境。便於軟體開發人員為高效能計算伺服器、桌面計算系統、手持裝置編寫高效輕便的**,而且廣泛適用於多核心處理器(cpu)、圖形處理器(gpu)、cell型別架構以及數字訊號處理器(dsp)等其他並行處理器,在遊戲、娛樂、科研、醫療等各種領域都有廣闊的發展前景。
二者的區別和前景可以參考
需要買gpu卡嗎?
軟體,安裝好,可以看到像下面這樣的頁面:開啟後可以在下面看到。
我的pc支援opencl,而不支援cuda.這樣,我可以用opencl開發啦!
與MySQL第一次親密接觸
資料庫的好處 1 可以持久化資料到本地 2 結構化查詢 資料庫的常見概念 1 db 資料庫 儲存資料的容器 2 dbms 資料庫管理系統,又稱為資料庫軟體或資料庫產品,用於建立或者管理db 3 sql 結構化查詢語言,用於和資料庫通訊的語言,不是某個資料庫軟體特有的,而是幾乎所有的主流的資料庫軟體通...
RabbitMQ的第一次親密接觸
企業應用系統,如果系統之間的通訊 整合與整合,尤其當面臨異構系統時,那麼需要分布式的呼叫與通訊。系統中一般會有很多對實時性要求不高但零零碎碎且耗時的地方,比如傳送簡訊,郵件提醒,記錄使用者操作日誌等,在使用者訪問量比較大的情況下,對系統壓力比較大。面對這些問題,我們一般會將這些請求,放在訊息佇列mq...
PHP與WCF第一次親密接觸
接觸php第二天,要求php訪問wcf服務 著實痛苦,無從下手啊.在網上查了很多資料知道php訪問wcf很方便 如上即可訪問 但是報錯,無法找到soapclient 這個類,在網上找答案,說是要去掉php.ini中 extension php soap.dll的分號去掉,然後重啟即可 由於不熟悉,兄...