写在最前面: 等等党继续等,我要看空中飞人。
现在30系显卡可能因为降价已经开始走入炼丹师的炉中,各位tracker也会频繁的使用pytracking框架中的ATOM和DIMP作为baseline,或者跑别人的代码里面用到了PRPooling,亦或者自己的代码里面想使用PRPooling,那可能会遇到编译的问题(PRPooling通常在被使用的时候都是在线编译的),如果没有编译问题的话那就恭喜了,下面就不用看了。
比如下面的博客都有问题:
比如在我自己的环境上也遇到过里面类似的报错,我的环境是CUDA11.1和RTX3090, PyTorch 1.7:
Using /home/ubntun/.cache/torch_extensions as PyTorch extensions root...
然后就没有了,这种啥报错都没有的最难debug了cudacontext.h:5:10: fatal error: cuda_runtime_api.h: no such file or directory
明明是有这个文件的nvcc fatal : Unsupported gpu architecture ‘compute_86’
算力86明明是30系和Ampere卡都支持的,结果也很懵圈
我的解决办法是这样的:
把原本的这几行
PrRoIPoolingForwardGpu(
stream, features.data<float>(), rois.data<float>(), output.data<float>(),
nr_channels, height, width, pooled_height, pooled_width, spatial_scale,
top_count
);
改成下面的这种, 其实就改了一行:
PrRoIPoolingForwardGpu(
stream, features.data_ptr<float>(), rois.data_ptr<float>(), output.data_ptr<float>(),
nr_channels, height, width, pooled_height, pooled_width, spatial_scale,
top_count
);
然后就能编译成功了,标志就是:
Loading extension module _prroi_pooling...
或者仍然会有这样的提示信息:
PreciseRoIPooling/pytorch/prroi_pool/src/prroi_pooling_gpu.c: In function
,如果是这样的话就再跑一遍就好了。
2024/3/11更新
还有一种错误,就是我升级pytorch之后遇到的:
fatal error: THC/THC.h: No such file or directory
遇到这个错误的时候也不需要降低pytorch版本,只需要去PreciseRoIPooling官网:https://github.com/vacancy/PreciseRoIPooling
重新clone一下就行了,官方已经解决了这个问题,因为之前大家可能用的是pytracking里面复制的老的prpooling.
如果有同样遭遇并且这样可以解决的,欢迎在下面评论~