4 errors detected in the compilation of “render_utils_kernel.cu“

部署环境:

平台:Windows 10

Python:3.10.13

Torch:1.12.1

Cuda:11.7

通过nvcc编译render_utils_kernel.cu的时候会返回以下错误信息

render_utils_kernel.cu(441): error: calling a __host__ function("std::conditional< ::std::is_same_v|| ::std::is_same_v, long double,    ::std::conditional< ::std::is_same_v&& ::std::is_same_v, float, double> ::type> ::type  ::pow<double, float, (int)0> (T1, T2)") from a __global__ function("raw2alpha_cuda_kernel<double> ") is not allowed

render_utils_kernel.cu(441): error: identifier "pow<double, float, (int)0> " is undefined in device code

render_utils_kernel.cu(515): error: calling a __host__ function("std::conditional< ::std::is_same_v|| ::std::is_same_v, long double,    ::std::conditional< ::std::is_same_v&& ::std::is_same_v, float, double> ::type> ::type  ::pow<double, float, (int)0> (T1, T2)") from a __global__ function("raw2alpha_backward_cuda_kernel<double> ") is not allowed

render_utils_kernel.cu(515): error: identifier "pow<double, float, (int)0> " is undefined in device code

4 errors detected in the compilation of "render_utils_kernel.cu".

 根据错误提示,修改render_utils_kernel.cu的441行和515行

# 原始代码
alpha[i_pt] = 1 - pow((1 + e), (-interval));


# 修改为
alpha[i_pt] = 1 - pow((double)(1 + e), (double)(-interval));

 

# 原始代码
grad[i_pt] = min(exp_d[i_pt], 1e10) * pow((1+exp_d[i_pt]), (-interval-1)) * interval * grad_back[i_pt];

# 修改为

grad[i_pt] = min(exp_d[i_pt], 1e10) * pow((double)(1+exp_d[i_pt]), (double)(-interval-1)) * interval * grad_back[i_pt];

修改完这两行代码后,编译就可以顺利通过了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值