
程潤偉 [美]馬克斯·格羅斯曼 泰·麥克切爾
本書主要介紹瞭如何使用GPU和利用CUDA C語言對其進行編程的。首先從基本的CUDA 概念及結構講起,一步一步地引導讀者進入CUDA的內部世界,由淺入深地介紹了其編程要求及其內部架構,使讀者對其有了整體印象後,逐步深入瞭解其內部機能,最後介紹了GPU的一些專用函數和注意事項。
本科畢設做的是對柱面掃描算法的回波信號進行GPU加速,然後自己摸索找到CUDA,程序設計過程中,這本書對我幫助特別大,尤其kernel之間的線程同步機制,wrap機制以及CPU和GPU之間的同步,仔細研究這些機制爲計算省下不少時間 雖然本科的畢設也就那麼回事,但這本書真是一本好書,想了解CUDA計算的一定要讀一讀,我論文寫完,給接手項目的研究生師兄對着這本書講解時,還發現一些可以用得上的機制,可以大大降低調試難度,後悔開發程序那會沒有讀完這本書 真心建議要做CUDA的朋友,一定一定要通讀整本書
作爲CUDA編程的入門書還是不錯的。畢竟講解和範例都很詳實,而且同類書也不多。英偉達自己的在線教程都太簡略了,而且也沒有那麼多例子。 但是這本書的問題也很多: 1、中文翻譯太爛。機翻的,校對也很馬虎。有很多不太通順、不好理解的句子,甚至還有很多翻譯錯誤。只能通過上下文猜測是什麼意思,或者只能跳過。 2、內容有些過時。沒有近幾年的新技術。畢竟這書出版有幾年了。不過對於入門而言,學習這些技術也是有用的,畢竟有些概念是通用的。 3、範例代碼有點雜糅,註釋太少。範例代碼經常把不同的實現雜糅在一個文件裏寫,並且註釋比較簡略。畢竟是給初學者的入門書,複雜一點的例子就不太好理解,比如多GPU二維模板計算那個例子。 總之,如果你能找到更好的 CUDA 入門教程,那可以不用看這本書。不然的話,這本書還是值得一讀。
緩慢的讀完了,由於有C的基礎,能看懂7分左右。書籍雖然老,但是並行編程的核心理念是沒有變的,書中介紹了很多優化考慮點,即便不寫CUDA,也是有指導意義的,當入個門吧,畢竟這玩意要實操,但是終於終於知道CUDA編程是個啥玩意了。作者有NVIDIA背景,介紹的知識點還是全面而又深刻的,強烈推薦。
雖然是早期cuda core時代的指編程南,但最核心的概念歷久彌新。它對硬件架構(計算核心和內存模型)、編程模型、執行模型的介紹全面且深入,非常值得有意於學習CUDA編程的人仔細閱讀。
單純羅列知識點,沒有邏輯,不如cuda book。
- 《CUDA C編程權威指南》 - CUDA的核心思想是數據並行, 將數據劃分給多個線程同時處理 - 兩種方法可以對數據進行劃分, 塊劃分和週期劃分 - 數據是在一維空間中存儲的, 即便是多維邏輯數據, 仍然要被映射到一維物理地址空間中 - 性能優化關注三個指標, 延遲, 帶寬, 吞吐量 - 延遲是一個操作從開始到完成所需要的時間, 常用微秒來表示 - 帶寬是單位時間內可處理的數據量, 通常表示爲MB/s或GB/s - 吞吐量是單位時間內成功處理的運算數量, 通常表示爲gflops(即每秒十億次的浮點運算數量) - CPU應用程序, CUDA庫, CUDA運行時API, CUDA驅動API, GPU - 數據局部性指的是數據重用,以降低內存訪問的延遲 - 時間局部性是指在相對較短的時間段內數據或資源的重用 - 空間局部性是指在相對較接近的存儲空間內數據元素的重用 - NVIDIA爲C和C++開發人員提供了綜合的開發環境以創建GPU加速應用程序, 包括以下幾種 - NVIDIA Nsight集成開發環境, CUDA-GDB命令行調試器, 用於性能分析的可視化和命令行分析器 - CUDA-MEMCHECK內存分析器, GPU設備管理工具 - 由一個內核啓動所產生的所有線程統稱爲一個網格, 同一網格中的所有線程共享相同的全局內存空間 - 一個網格由多個線程塊構成, 一個線程塊包含一組線程, 同一線程塊內的線程協作可以通過以下方式來實現 - 同步, 共享內存, 不同塊內的線程不能協作 - cudaDeviceSynchronize(); 啓動核函數後異步, 這個可以讓主機端等待 - CUDA核函數, __global__關鍵字, 以下限制適用於所有核函數 - 只能訪問設備內存, 必須具有void返回類型, 不支持可變數量的參數 - 不支持靜態變量, 顯示異步行爲
原書質量挺好,但是翻譯機翻痕跡太重了,嚴重影響閱讀
只會貼測試結果,流於表面,根本沒有深入原理解釋。另外這本書很舊,10多年前的內容還被翻譯出來,真的是喫x趕不上熱的。
出於好奇翻看的一本書,通篇瀏覽了一遍,書有段時間了,不過核心的東西沒變。