CUDA 總複習系列部落格文章是由 NVIDIA 解決方案架構和工程團隊總監 Pradeep Gupta 撰寫,目的是為初階或中階開發人員複習 CUDA、工具和最佳化的主要概念。
第 1 部分:回顧 GPU 運算的起源
科學探索和商業分析使對運算資源的需求變得永無止境。許多應用程式如天氣預報、運算流體力學模擬、近期的機器學習和深度學習,需要比目前更多的運算能力,以及更複雜且需要更多運算能力才能執行的演算法。
運算產業仰賴各種方式提供所需的效能,例如提高電晶體密度、指令層級平行、Dennard 縮放比例定律等。
第 2 部分:CUDA 入門
科學和商業的進步使對運算資源和工作負載加速的需求變得永無止境。平行程式設計是一種深奧的方式,讓開發人員能加快應用程式。然而,它有一些常見的挑戰。
第一個挑戰是簡化平行程式設計,使平行程式設計變得簡單。簡易的程式設計可吸引更多開發人員,讓他們有動力在平行處理器上移植更多應用程式。第二個挑戰是開發可簡易擴充的平行性應用軟體,以利用越來越多的 GPU 處理器核心。
這篇文章探討 CUDA 如何應對這些挑戰。其中也說明如何開始安裝 CUDA。
第 3 部分:GPU 運算生態系統
程式設計的簡易性和效能大幅提升是 CUDA 平台廣受採用的主要原因之一。而 CUDA 第二個成功的原因是因為 CUDA 具備廣泛且豐富的生態系統。
如同任何新平台,CUDA 的成功仰賴 CUDA 生態系統所涵蓋的工具、函式庫、應用程式及合作夥伴。任何新的運算平台都需要開發人員將應用程式移植到新平台。因此,開發人員需要最先進的工具和開發環境。
應用程式開始擴充後,在資料中心層級需要更多工具。NVIDIA 致力於為開發人員和企業提供最先進的工具和生態系統服務。
第 4 部分:CUDA 程式設計模型
CUDA 程式設計模型提供了 GPU 架構抽象化,該架構是應用程式與其在 GPU 硬體之間,可實現的橋梁。這篇文章概述 CUDA 程式設計模型的主要概念,說明如何用 C/C++ 等通用程式設計語言加以實現。
在此介紹 CUDA 程式設計模型中常用的兩個關鍵字:主機(host)和裝置(device)。
主機是系統中的可用 CPU。與 CPU 相關的系統記憶體稱為主機記憶體。GPU 稱為裝置,因此GPU 記憶體稱為裝置記憶體。
CUDA 實作課程與認證
在完成參閱「CUDA 總複習」系列部落格後,請造訪 NVIDIA 深度學習機構(DLI)探索 CUDA 加速運算以及深度學習相關的實作課程。NVIDIA DLI開發一系列的實作課程,可自行安排進度在雲端上存取全面設定完成的 GPU 加速伺服器,透過實作演練工作所需的相關技能。課程結束後還可進行線上測驗,通過後即可取得NVIDIA DLI官方電子認證證書。