gpt4 book ai didi

c++ - 将 THC/THC.h 模块替换为 ATen/ATen.h 模块

转载 作者:行者123 更新时间:2023-12-05 01:50:33 31 4
gpt4 key购买 nike

我对替换 方法有疑问。最近,我正在安装使用 cpp 和 cuda 编译的不同损失函数。然而,我遇到的是一个 fatal error

'THC/THC.h': No such file or directory

我发现 TH(C) 方法目前在最新版本的 pytorch 中已被弃用,取而代之的是 ATen API ( https://discuss.pytorch.org/t/question-about-thc-thc-h/147145/8 )。

当然,降级我的 pytorch 版本将解决问题。但是由于我的GPU兼容性问题,只好自己修改脚本。因此,我的问题可以归纳如下。

首先,如何使用 ATen API 替换依赖于 TH(C) 方法的代码?下面是我必须修改的代码,替换这三行看起来足以满足我的情况。

#include <THC/THC.h>
extern THCState *state;
cudaStream_t stream = THCState_getCurrentStream(state);

其次,对 cpp 文件的单一修改是否足以解决我现在面临的问题? (这只是一个小问题,回答第一个问题就足够了)。

作为引用,我附上了我要构建的文件的 github 链接 ( https://github.com/sshaoshuai/Pointnet2.PyTorch )。

最佳答案

经过一段时间的挣扎,我找到了适合自己的答案。在 THCState_getCurrentStream 的情况下,它可以直接替换为 at::cuda::getCurrentCUDAStream()。因此,修改后的代码块制定如下。

//Comment Out
//#include <THE/THC.h>
//extern THCState *state;
//cudaStream_t stream = THCState_getCurrentStream(state);

//Replace with
#include <ATen/cuda/CUDAContext.h>
#include <ATen/cuda/CUDAEvent.h>
cudaStream_t stream = at::cuda::getCurrentCUDAStream();

在替换整个源代码后,我能够成功构建模块。

希望这对您有所帮助。

关于c++ - 将 THC/THC.h 模块替换为 ATen/ATen.h 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72988735/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com