讓我們推出一個單獨的 CUDA 執行緒來打招呼

這個簡單的 CUDA 程式演示瞭如何編寫將在 GPU(又稱裝置)上執行的函式。CPU 或主機通過呼叫稱為核心的特殊函式來建立 CUDA 執行緒。CUDA 程式是具有附加語法的 C++程式。

要檢視它是如何工作的,請將以下程式碼放在名為 hello.cu 的檔案中:

#include <stdio.h>

// __global__ functions, or "kernels", execute on the device
__global__ void hello_kernel(void)
{
  printf("Hello, world from the device!\n");
}

int main(void)
{
  // greet from the host
  printf("Hello, world from the host!\n");

  // launch a kernel with a single thread to greet from the device
  hello_kernel<<<1,1>>>();

  // wait for the device to finish so that we see the message
  cudaDeviceSynchronize();

  return 0;
}

(請注意,為了在裝置上使用 printf 功能,你需要一臺計算能力至少為 2.0 的裝置。有關詳細資訊,請參閱版本概述 。)

現在讓我們使用 NVIDIA 編譯器編譯程式並執行它:

$ nvcc hello.cu -o hello
$ ./hello
Hello, world from the host!
Hello, world from the device!

有關上述示例的一些其他資訊:

  • nvcc 代表“NVIDIA CUDA 編譯器”。它將原始碼分為主機和裝置元件。
  • __global__ 是函式宣告中使用的 CUDA 關鍵字,表示該函式在 GPU 裝置上執行並從主機呼叫。
  • 三角括號(<<<>>>)標記從主機程式碼到裝置程式碼(也稱為核心啟動)的呼叫。這三個括號中的數字表示並行執行的次數和執行緒數。