繼8個月前的 CUDA Introduction 後一直沒把其他的文章補上來,會趁這個月把文章補齊。
※ 第二章 SIMT 概觀 ※
philip 發表在 痞客邦 留言(0) 人氣(11,149)
最近在研究nVidia CUDA剛好在PTT VideoCard板上,看到有人很專業的的分享程式設計心得
本文已徵求作者同意將轉錄在自己的blog做成筆記
//本文轉錄自 VideoCard 看板
//作者:a5000ml
[引言]
從軟體設計角度來看,CUDA 寫作並不困難,困難之處在於如何最佳化,它需要了解不少硬體的細節。一般而言未最佳化的程式,在 GPGPU 上面執行,可以比傳統的 CPU 快上 5~10 倍,而最佳化過的程式,往往還能再增速 5~10 倍,達到 25~100 倍的效能。
CUDA 和傳統 C++ 最大的差異在於「平行化的程式設計」vs.「序列化的程式設計」,例如傳統上透過迴圈執行數千次的程式碼,在 CUDA 上就可以將它拆解成數百個同時執行的執行緒,每個執行緒只執行十幾次而己,因此產生數十到數百倍的效能。
CUDA 是在傳統 C++ 的基礎上,加入一些延伸語法,以及輔助的函式庫,而形成的一種程式語言,一般而言只要熟悉 C 或 C++,就很容易上手 (可能比 Java 容易上手,因為傳統 C/C++ 的函式庫都可以用),編譯好的程式碼,也可以跟其它語言做不錯的聯結。
在接下來幾篇文章中,我們從簡單的軟體設計角度開始,介紹 CUDA 如何寫作,逐漸帶出硬體細節,然後介紹最佳化的一些技術。
philip 發表在 痞客邦 留言(0) 人氣(5,472)