纹理不是模板

texture is not a template

我在 Microsoft Visual Studio 2019 中使用 CUDA 来编写此代码:

#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
#include <cuda.h>
#include <device_launch_parameters.h>
#include <fstream>
#include <cstddef>

texture<float, 2, cudaReadModeElementType> texRef;

它给我 texture is not a template 错误,我似乎对此无能为力。我尝试过的所有其他与 CUDA 相关的代码似乎都可以编译。该文件确实是 .cu 文件,而不是 .cpp 文件。带纹理的 CUDA 样本对我来说编译正确。

这可能是什么问题?

(虽然有相同的问题,但他们都建议将 .cpp 文件更改为 .cu 文件应该会有所帮助,但我的情况似乎并非如此。)

这是因为您的项目正在尝试使用 Cl 而不是 nvcc 编译您的文件。

在你的.vcxproj项目文件中替换

<ClCompile Include="myfile.cu" />`

来自

<CudaCompile Include="myfile.cu" />

如果你更新了cuda,你还需要更新你的ExtensionSettings项目文件:

  <ImportGroup Label="ExtensionSettings">
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 11.3.props" />
  </ImportGroup>

我补充说纹理参考是 deprecated in cuda 11.3 and instead you should use texture objects