本人在使用VS2019調用CUDA給予的樣例代碼時,產生了以下錯誤。
對於命名空間cooperative_groups無法識別,查找cooperative_groups.h發現其內容因VSIntellisense無法識別其
__CUDACC__導致主文件顯示錯誤。
在官網文檔中對於CUDA的運行方式做了如下闡述,CUDA應用程序的源文件由傳統主機代碼和針對設備(GPU)代碼構成,CUDA將兩種代碼在編譯時進行分離,使用主機編譯器對主機代碼編譯,對於GPU代碼使用NVIDIA專有編譯器(一般爲NVCC),後將CUDA代碼嵌入進主機代碼中。
NVCC編譯器對CUDA源文件進行拆分,編譯,預處理,合併,並可隱藏對開發人員編譯的細節。接受一系列傳統編譯器的選項,例如宏定義和庫路徑。
nvcc預定義以下宏:
__NVCC__
在編譯C / C ++ / CUDA源文件時定義。
__CUDACC__
在編譯CUDA源文件時定義。
__CUDACC_RDC__
在可重定位設備代碼模式下編譯CUDA源文件時定義(請參閱NVCC選項以進行單獨編譯)。
__CUDACC_DEBUG__
在設備調試模式下編譯CUDA源文件時定義(請參閱指定編譯器/鏈接器行爲的選項)。
__CUDACC_RELAXED_CONSTEXPR__
在命令行上指定--expt-relaxed-constexpr標誌時定義。 有關更多詳細信息,請參閱“CUDA C編程指南”。
__CUDACC_EXTENDED_LAMBDA__
在命令行上指定--expt-extended-lambda標誌時定義。 有關更多詳細信息,請參閱“CUDA C編程指南”。
__CUDACC_VER_MAJOR__
使用nvcc的主要版本號定義。
__CUDACC_VER_MINOR__
使用nvcc的次要版本號定義。
__CUDACC_VER_BUILD__
使用nvcc的構建版本號定義。
因此對於爲編譯時VS是識別不出CUDA的宏定義的。
目前我在官網上還沒找到具體的解決方案,總之程序可以運行只是識別不出來罷了。