./mmcv/ops/csrc/pytorch/cc_attention_cuda.cu:4:10: fatal error: THC/THC.h: 没有那个文件或目录
时间: 2023-07-10 16:31:38 浏览: 217
这个错误是因为编译器无法找到 `THC/THC.h` 文件。`THC` 是 PyTorch 的 CUDA 后端库之一,这个错误可能是由于未正确安装 PyTorch 或者 CUDA 导致的。
你可以尝试以下解决方法:
1. 确保已正确安装 PyTorch 和 CUDA。
2. 如果你正在使用 conda 环境,请确保你已经激活了该环境。
3. 确认 `THC/THC.h` 文件是否存在于你的系统中,如果不存在,可能需要重新安装 PyTorch。
4. 如果你使用的是 PyTorch 1.7 或更高版本,可以尝试在 `cc_attention_cuda.cu` 文件中添加以下内容:
```
#ifndef THC_GENERIC_FILE
#define THC_GENERIC_FILE "ATen/native/cuda/cc_attention_cuda.cu"
#else
#include THC_GENERIC_FILE
#endif
```
然后重新编译你的代码。
希望这些方法可以帮助你解决问题。
相关问题
RuntimeError: ./mmcv/ops/csrc/pytorch/cuda/sparse_indice.cu 126
这个错误通常是由于CUDA版本不匹配导致的。您需要确保您使用的CUDA版本与您的mmcv库兼容。您可以尝试升级或降级CUDA版本,或者安装与您的CUDA版本匹配的mmcv版本。您还可以尝试更新您的NVIDIA驱动程序,以确保其与您的CUDA版本兼容。如果这些解决方案都不起作用,您可以尝试在GitHub上搜索相关问题或联系mmcv库的开发人员进行支持。
gcc -pthread -B /home/zrb/anaconda3/envs/open-mmlab/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMMCV_WITH_CUDA -I/home/zrb/mmskeleton/mmcv/mmcv/ops/csrc/pytorch -I/home/zrb/mmskeleton/mmcv/mmcv/ops/csrc/common -I/home/zrb/mmskeleton/mmcv/mmcv/ops/csrc/common/cuda -I/home/zrb/anaconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/include -I/home/zrb/anaconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -I/home/zrb/anaconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/include/TH -I/home/zrb/anaconda3/envs/open-mmlab/lib/python3.7/site-packages/torch/include/THC -I/usr/local/cuda/bin/include -I/home/zrb/anaconda3/envs/open-mmlab/include/python3.7m -c ./mmcv/ops/csrc/pytorch/active_rotated_filter.cpp -o build/temp.linux-x86_64-cpython-37/./mmcv/ops/csrc/pytorch/active_rotated_filter.o -std=c++14 -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=_ext -D_GLIBCXX_USE_CXX11_ABI=1 cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
这个警告是编译器提示你,`-Wstrict-prototypes` 这个命令行选项只适用于 C/ObjC,而不适用于 C++。它是一个过时的选项,用于启用对函数原型严格检查的警告提示。
在你的编译命令中,`-Wstrict-prototypes` 是一个无效的选项,因为你正在编译的是 C++ 代码,而不是 C 代码。编译器已经忽略了这个选项,并给出了一条警告。
如果你想开启警告提示,建议使用 `-Wall` 选项,它会启用大部分的警告提示。如果需要更严格的警告提示,可以使用 `-Wextra` 选项。但请注意,这些选项都适用于 C++ 代码,而不是 C 代码。
阅读全文