问题描述:
从网上搜索看到,这是由于pytorch升级之后将 THC/THC.h转移到了ATen/ATen.h。所以导致查找不到。官方说torch 1.11 开始改的,原则上之前的版本是可以调用 THC/THC.h 该头文件的,但是我尝试过1.7.1 1.7.0 1.8.0都是不行。
因此写个博客记录一下 THC/THC.h 的方法 与 ATen/ATen.h 对应关系
问题项目:
https://github.com/DiT-3D/DiT-3D
问题解决:
1.
按照#include <THC/THC.H>报错!_#include <thc/thc.h>-优快云博客 该播主所述:
可以直接将 include <THC/THC.h> 头文件注释掉
// #include <THC/THC.h>
2. 再次运行时,报出该头文件引用的方法,没有定义。
error: identifier "THCudaCheck" is undefined
解决:
THCudaCheck --> AT_CUDA_CHECK # 平替掉
# CHECK_EQ # 注释掉
注:
由于没有从网上找到CHECK_EQ(x, y) 方法的平替,通过查看源码发现,该方法只是判断两个值是否相等。因此对我的代码影响不大,所以我选择直接注释掉。即成功
3. error: identifier "THCCeilDiv" is undefined
解决:
# dim3 grid(std::min(THCCeilDiv(**, 512L), 4096L));
dim3 grid(std::min(((int)** + 512 -1) / 512, 4096));
注意注意: 这里的** 是要替换成你的程序中的部分,例如:
// dim3 grid(std::min(THCCeilDiv((long)grad.numel(), 512L), 4096L));
dim3 grid(std::min(((int)(long)grad.numel() + 512 -1) / 512, 4096));
切勿直接复制使用
——————————————————————————————————————————
该博客还会继续更新在编译过程中所遇到的THC/THC.h 的错误,同时欢迎各位大佬更正补充。