Introduction (簡介):
CUDA是一個並行計算的平台,是由NVIDIA發明的編程模型,CUDA通過使用圖形處理單元(GPU)能夠極大的增加計算能力。
CUDA被研發主要出於以下幾個設計目標:
- 為標准程序語言(例如: C)提供一個擴展的小集合,能夠允許直接實現並行算法,如果使用CUDA C/C++, 程序員就可以把注意力集中在算法的並行化上,而不是花大量的時間在它們的實現上。
- 支持異構(不均勻)計算,從而應用程序能同時使用CPU和GPU,程序的串行部分在CPU上運行,而並行部分則分配給GPU。同樣的,CUDA能夠應用在現存的應用程序上。 CPU和GPU被當作獨立的設備,分別由各自的存儲空間。這樣的配置也允許同時在CPU和GPU上計算而不存在相互內存資源競爭關系。
CUDA-capable GPUs 擁有數百個核,能夠運行數千個計算線程。這些核擁有的共享資源包括一個寄存器文件和共享內存。片上的共享內存(the on-chip shared memory)允許並行的任務運行在這些核上來共享數據,而沒有通過系統內存總線來發送。
這個向導將會向你展示怎樣安裝以及檢測CUDA開發工具的正確操作。
這個教程描述了怎樣在C/C++之中,運用cuda來進行編程。cuda是一門語言用來對大規模的並行GPU進行編碼,它需要讀者有C/C++編程經驗。
System Requirements(系統需求):
為了在你的電腦使用CUDA,你需要滿足以下條件:
- CUDA -capable GPU
- Microsoft Windows XP, Vista, 7, or 8 or Windows Server 2003 or 2008
- NVIDIA CUDA Toolkit(available at no cost from http://www.nvidia.com/content/cuda/cuda-downloads.html)
- Microsoft Visual Studio 2008 or 2010, or a corresponding version of Microsoft Visual C++ Express
讓我們首先確保滿足CUDA編程的先決條件。
INSTALLING CUDA DEVELOPMENT TOOLS(安裝CUDA開發工具):
安裝CUDA開發工具運行在合適的Windows版本上主要由簡單的幾步組成:
- 驗證系統是否有CUDA-capable GPU
- 下載 the NNIDIA CUDA 工具包
- 安裝 NVIDIA CUDA 工具包
- 測試安裝的軟件運行正確,以及與硬件的通信
Verify You Have a CUDA-Capable GPU(驗證是否為CUDA-Capable GPU)
為了驗證你的GPU是CUDA-capable, 打開控制面板,雙擊系統選項,在打開的系統屬性窗口上,點擊硬件tab,然后設備管理器,展開顯示適配器入口。在這里你將會找到供應商的名稱和圖形卡的模型。如果是一個NVIDIA卡,並且在 http://www.nvidia.com/object/cuda_gpus.html ,上被列出來了,那么你的GPU就是CUDA-capable.
Download the NVIDIA CUDA Toolkit(下載NVIDIA CUDA工具包):
准備開始cuda編程,需要下載並安裝cuda toolkit and developer driver(https://developer.nvidia.com/cuda-downloads). 這個工具包包含nvcc,the NVIDIA CUDA Compiler,還有一些軟件(開發cuda應用所必要的)。此外,下載的驅動確保了GPU程序能夠正確的運行在CUDA-capable hardware之上,這也是不可缺少的。
Install the CUDA Software(安裝CUDA軟件):
安裝工具包之前, 你應該閱讀 Release Notes, 它提供詳細的安裝說明和軟件功能。
點擊CUDA工具包進行安裝,接着在屏幕上出現如下提示:
大概意思就是: 為了CUDA的運作,驅動和工具包必須安裝。如果你沒有安裝一個單獨的驅動,就從NVIDIA CUDA 工具包中來安裝驅動。
你可以從下面的包中來選擇安裝:
- CUDA 驅動
CUDA驅動的安裝可以通過silent或者GUI,
- Silent: 僅有顯示驅動將被安裝
- GUI: 在CUDA 工具包安裝之后,將會出現一個窗口,如果你在最后一個對話框允許它the full driver installation UI. 你可以選擇你希望安裝的某些特性。
2. CUDA 工具包
CUDA ToolKit 默認的安裝路徑是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v#.#, #.#是版本號(例如3.2或者更高)。它的目錄包含以下內容:
Bin\
編譯器的可執行文件和運行時庫
Include\
編譯CUDA程序需要的頭文件
Lib\
鏈接CUDA程序需要的庫文件
Doc\
CUDA C程序向導, CUDA C Best Practices Guide, CUDA 函數庫文檔,還有一些CUDA 工具包有關的文檔。
3. CUDA 樣本
CUDA 樣本包含許多例題和模版的源代碼
對於XP,樣本放在:
C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\CUDA Samples\v5.0
對於Vista,7,Server 2008,樣本放在:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0
Verify the Installation(驗證安裝):
在繼續進行之前,驗證CUDA程序能發現並且與CUDA-capable 硬件正確通信。為了驗證它, 你需要編譯並允許一些包含的樣本程序。
在你的機器上通過運行命令行 nvcc --version 能夠確認CUDA ToolKit 的安裝是否正確。例如,在一台Mac OSX上,將會輸出編譯器信息。
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2009 NVIDIA Corporation Built on Thu_Mar_11_12:08:00_PST_2010 Cuda compilation tools, release 3.0, V0.2.1221
如果之前的命令不成功,CUDA ToolKit 可能沒有安裝成功或者nvcc的路徑
C:\CUDA\bin on Windows machines, /usr/local/cuda/bin on POSIX OSes
不是PATH 環境變量的一部分。
此外,你也需要一個 host compiler, 它與nvcc協作來編譯和構建cuda程序。 在Windows之中,它是c1.exe(微軟編譯器),過渡成了Microsoft Visual Studio。 對於在POSIX OSes,它是GCC 或者 G++。
官方的CUDA 開始向導(http://developer.download.nvidia.com/compute/cuda/5_0/rel/docs/CUDA_Getting_Started_Guide_For_Microsoft_Windows.pdf)會告訴你什么編輯器版本在你的特殊平台上被支持。
Compiling CUDA Programs(編譯CUDA程序):
在CUDA樣本中的工程文件已經設計成了例子,編譯成32或64位Windows projects(release or debug mode),對於VS2008 or 2010或者2013使用后綴名*.sln 解決方案。
為了保證一切正確, 讓我們編譯和運行一個簡單的CUDA程序來確保所有的工具能夠一起正常工作。
1 #include <stdio.h> 2 3 __global__ void foo() 4 { 5 } 6 7 int main() 8 { 9 foo<<<1,1>>>(); 10 printf("CUDA error: %s\n", cudaGetErrorString(cudaGetLastError())); 11 return 0; 12 }
為了編譯這個程序, 復制源代碼到新建文件 test.cu ,然后通過命令行來編譯它。例如,在一台Mac OSX系統上,正確將會出現以下提示:
$ nvcc test.cu -o test $ ./test CUDA error: no error
如果程序通過編譯無錯,嘿嘿,那我們就可以 Start Coding 了!!!