最近開始研究CUDA,準備做演算法加速,因此生出這篇筆記。因CUDA 是叫用 nvcc 進行編譯,CUDA 函數無法被C# 這種 managed code 直接呼叫,在同一個 CUDA 專案中只能用C或C++來呼叫CUDA,因此必須在 CUDA 專案中加一個 C/C++ 的 wrapper 函數,將 CUDA 專案包裝成 C 語言的DLL檔,然後在 C# 中用 DllImport 呼叫 C 函式來轉給 CUDA 計算。以下實作以 Visual Studio 2017 CommunityCUDA 9.2 SDK為例,完整程式碼在https://github.com/ghostyguo/CudaDotNet。