解决DCNv2不能使用高版本pytorch编译的问题

这篇具有很好参考价值的文章主要介绍了解决DCNv2不能使用高版本pytorch编译的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可变形卷积网络GitHub - CharlesShang/DCNv2: Deformable Convolutional Networks v2 with Pytorch代码已经出来好几年了,虽然声称"Now the master branch is for pytorch 1.x",实际上由于pytorch自1.11版开始发生了很大变化,原来基于C实现的THC封装实现的调用cuda、cudnn和cublas的API(只能用NVIDIA的GPU)被基于C++实现的ATen和c10里的API代替(ATen通过vulkan实现支持NVIDIA以外的GPU, ATen代码在https://github.com/pytorch/pytorch/tree/main/aten/src/ATen),THC下的文件基本被删掉了,所以编译DCNv2时会遇到很多错误。

解决DCNv2不能使用高版本pytorch编译的问题,深度学习,PyTorch,CUDA,pytorch,人工智能,DCN,THC,ATen,cublas

首先肯定是 error: THC/THC.h: No such file or directory 这样的错误,因为上面图中可以看到THC目录下已经没有这个文件了。

其次,DCNv2代码里调用的THC相关的API都必须使用ATen或c10的API替代,例如THCState_getCurrentStream()、THCCeilDiv()、THCudaCheck()、THCudaMalloc()、THCudaFree(),分别使用at::cuda::getCurrentCUDAStream()、at::ceil_div()、AT_CUDA_CHECK()、c10::cuda::CUDACachingAllocator::raw_alloc()、c10::cuda::CUDACachingAllocator::raw_delete(),否则编译时调用这些API的地方肯定是undefined错误。使用到THCState相关的地方都注释掉。

第三,THC里实现的cublas相关封装API需要使用ATen的cublas相关API替代,THCudaBlas_SgemmBatched()需要使用cublasCreate_v2() + cublasSgemmBatched() + cublasDestroy_v2(),而看起来似乎是和THCudaBlas_SgemmBatched()()0对应的at::cuda::blas::gemmBatched()不能用(不明白ATen这里为何是这样)!    

THCudaBlas_Sgemm()和HCudaBlas_Sgemv()则分别使用at::cuda::blas::gemm()和at::cuda::blas::gemv()替代即可。

这个DCNv2_latest GitHub - lucasjinreal/DCNv2_latest: DCNv2 supports decent pytorch such as torch 1.5+ (now 1.8+)虽然修改代码实现了可以使用pytorch 1.11编译,但是把DCNv2里使用cublas实现的部分全部改用ATen的Tensor运算API改写了,相当于意译吧,是否正确和性能怎样没有去验证过,有兴趣的可以试试,我这个改写是尽量和DCNv2的原始实现保持一致,保持了使用cublas运算。

我的代码提交在GitHub - CharlesShang/DCNv2: Deformable Convolutional Networks v2 with Pytorch

顺便记录一下遇到的其他问题:

1.出现警告could not find ninja,安装ninja:  sudo apt-get install ninja
2.出现错误:No such file or directory: ':/usr/local/cuda:/usr/local/cuda/bin/nvcc'
这个原因是ninja编译过程中需要,实验了一下,只有当你同时安装了多个cuda版本时出现,但是修改ninja的build配置文件没用!需要强制设置CUDA_HOME环境变量指定使用哪个版本的cuda:
     export CUDA_HOME=/usr/local/cuda-11.4
在我的环境里,实验了一下,如果写成 

     export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.4

也不行会照样报上面的找不到nvcc的错误!应该是ninja的代码实现有毛病。文章来源地址https://www.toymoban.com/news/detail-699391.html

到了这里,关于解决DCNv2不能使用高版本pytorch编译的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决pytorch和cuda版本不匹配问题

    在跑项目时遇到了以下问题: RuntimeError: CUDA error: no kernel image is available for execution on the device. Anaconda安装pytorch遇到一直循环Solving environment问题 CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaconda*** Executing transaction: failed 是pytorch和电脑自身cuda版本不匹配

    2023年04月08日
    浏览(32)
  • 为什么分类问题不能使用mse损失函数,更容易理解版本

    分类问题通常不适合使用均方误差(Mean Squared Error,MSE)损失函数,原因如下: 输出差异的度量不同:MSE损失函数是基于预测值和真实值之间的差异的平方和进行计算的,适用于回归问题(建立一个模型来预测连续数值输出的问题, eg: 房价预测;股票价格预测…),其中

    2024年04月26日
    浏览(26)
  • 在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题

    更新证书需要重启服务才能生效(证书已经过期和还未过期都要重启才能生效),重启会对业务产生影响,请申请时间窗口进行处理 注意该工具只适用于k8s版本v1.18.5、请按照服务器架构选择对应的版本 相关说明: 证书到期后 kube-scheduler 和 kube-controoler-manager 会出现异常,原

    2024年04月25日
    浏览(24)
  • ROS Noetic版本 rosdep找不到命令 不能使用的解决方法

       使用rosdep指令来安装开源包所需的依赖是很方便的,本文主要介绍ROS Noetic版本中使用rosdep,报错找不到命令 ,rosdep不能使用的解决方法。    rosdep:找不到命令    在我之前的文章《详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)》中安装ROS

    2024年02月14日
    浏览(50)
  • Pytorch、CUDA和cuDNN的安装图文详解win11(解决版本匹配问题)

    本文已收录于Pytorch系列专栏: Pytorch入门与实践 专栏旨在详解Pytorch,精炼地总结重点,面向入门学习者,掌握Pytorch框架,为数据分析,机器学习及深度学习的代码能力打下坚实的基础。免费订阅,持续更新。 可能出现的问题: CUDA和cuDNN版本不匹配 CUDA和Pytorch版本不匹配

    2023年04月18日
    浏览(44)
  • 解决 conda activate 不能使用的问题

    conda 新建了环境后,使用 conda activate 进行激活会显示如下错误 可以先使用  source activate 命令进行激活,就会进入到(base)环境中,然后就可以使用 conda activate 命令了。  

    2024年02月12日
    浏览(25)
  • ROS-Melodic版本编译机器人源码报错问题及解决方法

    1.Could not find the required component ‘uuid_msgs’. sudo apt-get install ros-melodic-uuid-msgs 2.Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) sudo apt-get install libsdl-dev 3.Could NOT find SDL_image (missing: SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS) sudo apt-get install libsdl-image1.2-dev 4.Could not find a package configuration file

    2024年02月12日
    浏览(44)
  • 深度学习:Pytorch安装的torch与torchvision的cuda版本冲突问题与解决历程记录

    今天不小心将conda环境中的一个pytorch环境中的torch包给搞混了,将其更新了一下,发生了一些问题: 当时运行了一下这个代码:  pip install torchvision --upgrade 导致了环境中包的混乱: 只能说欲哭无泪,当时这个 pytorch环境中我是安装的CUDA11.8的版本应该,后来安装了cpu版本的将

    2024年02月20日
    浏览(37)
  • 解决redis不能使用本机IP连接的问题

    连接Redis,只能使用127.0.0.1连接不能使用本地主机的IP地址,解决方法如下所示: 首先,在redis目录下面找到redis.windows-service.conf以及redis.windows.conf两个文件,使用编辑器notepad++打开,将bind 127.0.0.1注释,解除绑定,此外将下方的 修改为 改完之后点击保存。 接下来,最重要的

    2024年02月12日
    浏览(32)
  • 如何用conda安装PyTorch(windows、GPU)最全安装教程(cudatoolkit、python、PyTorch、Anaconda版本对应问题)(完美解决安装CPU而不是GPU的问题)

            安装PyTorch的开发环境:Anaconda+CUDA+cuDNN+PyCharm Community 1.1 版本选择 第一步就是最关键的版本对应问题(这决定你能否成功安装PyTorch,以及能否成功安装GPU版本的关键问题),可以这么说,版本不能对应好,后面有很大的问题,因此,我们要先确定版本的对应关系。(

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包