本文主要是介绍编译遇到 AT_CHECK 未定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
mmdet/ops/nms/src/nms_cuda.cpp:4:23: error: ‘AT_CHECK’ was not declared in this scope; did you mean ‘DCHECK’?4 | #define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")| ^~~~~~~~
我在编译旧版本 mmdetection
的 CUDA 扩展时,遇到:AT_CHECK
宏没有被声明。这是因为 PyTorch 在 1.5 版本后将 AT_CHECK
宏更名为 TORCH_CHECK
。
我本地的环境是 torch2.2
如果在编译一个依赖于旧版本 PyTorch API 的项目,而环境中安装的是新版本的 PyTorch,就可能会遇到这样的问题。
找到所有的 AT_CHECK
并将它们替换为 TORCH_CHECK
即可
然后我就遇到了
code=compute_75 -gencode=arch=compute_75,code=sm_75 -std=c++17
mmdet/ops/nms/src/nms_kernel.cu:6:10: fatal error: THC/THC.h: 没有那个文件或目录6 | #include <THC/THC.h>| ^~~~~~~~~~~
compilation terminated.
这个问题只能降 torch 版本到1.8才能解决了…
参考自:
https://github.com/open-mmlab/mmdetection3d/issues/1332
这篇关于编译遇到 AT_CHECK 未定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!