VS使用CUDA對於cooperative_groups.h文件無法識別原由

本人在使用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的宏定義的。

目前我在官網上還沒找到具體的解決方案,總之程序可以運行只是識別不出來罷了。

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