编译cuda源程序时出错 error: function “atomicAdd(double *, double)” has already been defined

注:个人笔记

cuda 8.0 提供了对atomicAdd的定义,但atomicAdd在之前的cuda toolkit中并未出现,因此一些程序自定义了atomicAdd函数。

因此,在atomicAdd前添加宏判断即可。

如:

#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600 

#else 

   __device__ double atomicAdd(double* a, double b) 

   { 

      return b; 

   } 

#endif

再次编译程序即可成功!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这段代码定义了一个名为 `rasterize` 的函数,用于将给定的坐标 `self` 根据配置参数 `cfg` 进行栅格化,并返回栅格化后的像素坐标。 函数内部进行了一系列的数值计算来进行栅格化。具体的计算步骤如下: 1. 创建一个 `center` 变量并赋值为 127.5,即图像的中心位置。 2. 将 `self.col` 转换为 `f64` 类型,并加上 `self.col_offset` 除以 255.0 的结果,再减去 `center`,得到 `fcol`。 3. 将 `self.row` 转换为 `f64` 类型,并加上 `self.row_offset` 除以 255.0 的结果,再减去 `center`,得到 `frow`。 4. 根据配置参数 `cfg` 中的旋转角度计算出经过旋转后的 x 坐标 `xrot` 和 y 坐标 `yrot`。 - 对于 x 坐标:将 `center` 加上 `cfg.rot_cos` 乘以 `fcol`,再减去 `cfg.rot_sin` 乘以 `frow`。 - 对于 y 坐标:将 `center` 加上 `cfg.rot_sin` 乘以 `fcol`,再加上 `cfg.rot_cos` 乘以 `frow`。 5. 使用 `indexify` 函数计算出经过缩放和偏移后的像素坐标 `icol` 和 `irow`。 - 对于 x 坐标:使用 `cfg.scale_x_fov`、`cfg.pixels_per_mm`、`xrot` 和 `c.x` 作为参数调用 `indexify` 函数。 - 对于 y 坐标:将 255.0 减去 `yrot`,并使用 `cfg.scale_y_fov`、`cfg.pixels_per_mm`、该值和 `c.y` 作为参数调用 `indexify` 函数。 6. 返回栅格化后的像素坐标 `(icol, irow)`。 这段代码根据给定的坐标和配置参数进行栅格化,并返回经过计算后的像素坐标。具体的计算逻辑可能与特定的图像处理需求相关。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值