Cuda 學習 - Hello World === # Cuda 介紹 * CUDA 是用於圖形處理單元(graphical processing units,GPU)的平行運算平台和程式設計模型。透過 CUDA,您可以利用 GPU 的運算能力加速應用程式。 * 利用 Cuda 寫 code 前需要先安裝對應的 cuda 套件及支援的 cudnn, 對應版本可在網路上找尋到相關教學 * Cuda 撰寫是轉寫 .cu , 寫法與 C/C++ 相似, 編譯實需使用的 nvcc 作為編譯器 * C vs Cuda 程式上使用的指令, 其實就差在前面多個cuda | c | cuda | | -------- | ----------- | | malloc | cudaMalloc | | memset | cudaMemset | | free | cudaFree | * Cuda 應用的領域 * 圖形渲染 * 科學計算 * AI 領域(影像處理、NLP...) # Hello World * 引入相關 .h 檔 ```cpp= #include <cuda_runtime.h> #include <device_launch_parameters.h> #include <stdio.h> ``` * 撰寫 cuda function , 需要住要的是要使用 cuda 的 function 前面需要添加global ```cpp= __global__ void hello_cuda(){ printf("Hello CUDA world \n"); } ``` * 執行函式 ```cpp= int main(){ hello_cuda<<<1, 1>>>(); cudaDeviceSynchronize(); cudaDeviceReset(); return 0; } ``` * 編譯可用cmake生成Makefile後在將.cu檔編譯成執行檔 ```cmake= cmake_minimum_required(VERSION 3.16) project("main" LANGUAGES CXX CUDA) add_executable(main) target_sources(main PRIVATE "main.cu") ``` * 執行成果 ![Screenshot from 2024-09-07 13-27-55](https://hackmd.io/_uploads/BkdPNDF2C.png) [github](https://github.com/GU-Lin/Cuda_Practice/tree/main/1_Hello_World) 參考資料: https://roo.cash/blog/nvidia-cuda/ * ###### tags : `Cuda`