來自GPU的Hello World-基於Win10+VS2019+CUDA 11.0搭建CUDA編程環境

  CPU和GPU 當代計算機的兩個核心,GPU計算與CPU計算的結合,使得原本的計算性能得到大幅度的提高,兩者功能的互補性使得CPU+GPU的異構並行計算得到快速發展。爲了支持使用CPU+GPU異構架構來執行應用程序,核廠設計了被稱爲CUDA的一種通用並行計算平臺和編程模型。
  CUDA Toolkit官方下載傳送門!

  • 操作系統版本:Win10
  • Visual Studio版本:Visual Studio 2019
  • CUDA版本:CUDA Toolkit 11.0 RC

1、CUDA的安裝

1.1、查看電腦顯卡支持的CUDA的版本:

NVIDIA 控制面板–> 幫助–> 系統信息–> 組件:
查看CUDA支持的版本

1.2、安裝成功後查看nvcc的安裝版本

nvcc版本

1.3、配置環境變量

CUDA_PATH: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0
CUDA_PATH_V11_0: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0

  上述兩項是安裝完成Cuda後,已自動生成的環境變量的配置,我們需要自行添加的下述變量:

CUDA_BIN_PATH: %CUDA_PATH%\bin
CUDA_LIB_PATH: %CUDA_PATH%\lib\x64
CUDA_SDK_PATH: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.0
CUDA_SDK_BIN_PATH: %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH: %CUDA_SDK_PATH%\common\lib\x64

  並在系統變量Path中,添加一下四個信息:

%CUDA_BIN_PATH%
%CUDA_LIB_PATH%
%CUDA_SDK_BIN_PATH%
%CUDA_SDK_LIB_PATH%

1.4、安裝驗證

  驗證安裝是否成功,在官方的guideline中關於deviceQuery sample program指明的路徑是:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\bin\win64\Release
但是實際驗證中,該程序的路徑在:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite
  執行deviceQuery.exe 和 bandwidthTest.exe進行驗證。
驗證
兩次的運行結果都是PASS,則有關係統的環境配置就完成了。接下來運行安裝Cuda之後的測試用例,測試用例所在路徑根據你安裝Cuda的路徑,如:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.0…

2、VS2019 配置CUDA工程(默認已安裝VS,安裝VS部分不再贅述)

  本部分將運行0_Simple\路徑下的測試用例simplePrintf,需先打開工程後,在VS中完善相關配置。

2.1、增加.cu文件拓展名

2.1.1、工具–>選項–>文本編輯器–>文件拓展名, 新增擴展名 .cu 並將編輯器設置爲:Microsoft Visual C++。
配置1
2.1.2、工具–>選項–>項目和解決方案–>VC++項目設置,添加要包括的擴展名".cu"。
配置-2

2.2、配置生成依賴項

2.2.1、配置生成自定義:右鍵打開的項目–>生成依賴項–>生成自定義–>勾選CUDA v11.0。
配置-3
2.2.2、配置.cu文件的配置屬性:右鍵點擊.cu文件–>將該類型文件的屬性設置爲 CUDA c/c++。
配置-4
2.2.3、運行測試用例。VS會調用nvcc編譯器,編譯.cu代碼。
配置-5

OK,基本環境我們搭建成功了,接下來就來試試如何使用GPU來say Hello World!吧。

3、GPU編程測試demo

  使用VS新建空項目即可,並按上述步驟2.2配置項目。

#include "stdio.h"

/*
修飾符__global__表明這個函數是將會從CPU中調用,在GPU中進行執行。
並藉此函數來啓動內核函數。
*/
__global__ void hello_world_from_gpu(void)
{
	printf("Hello World from GPU\n");
	return;
}

int main(void)
{
	printf("Hello World from CPU\n");

	hello_world_from_gpu <<<1, 5 >>> ();
	/*
	三重尖括號裏的參數表明的是相關的執行配置,用來表明使用多少線程來執行內核函數,
	在本例子中有5個GPU線程被系統所調用。
	*/
	cudaDeviceReset();
	/*
	執行完成後調用cudaDeviceReset()函數釋放和清空與當前進程運行相關的資源。
	*/
	return 0;
}

測試結果:
hw
參考書籍:
1、《CUDA C權威編程指南》
2、CUDA Installation Guide for Microsoft Windows
參考博文:
1、 Win10 系統在 Visual Studio 2019 環境下配置 CUDA 10.1 + TensorFlow-GPU 1.14.0
2、 vs2017 配置cuda 項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章