gpt4 book ai didi

c++ - 如何正确避免 CUDA 中单/ double 的复制粘贴方法

转载 作者:行者123 更新时间:2023-11-30 01:50:13 26 4
gpt4 key购买 nike

<分区>

使用 CUDA 时,我经常比较单精度和 double (浮点/ double )的执行时间。为了避免复制粘贴方法,我经常在标准情况下使用模板在 float 和 double 之间切换。

当我必须使用外部方法(例如 cusparse/cublas 库中的方法)时,问题就开始了。在这种特殊情况下,例如:

cublasSaxpy() // single precision
cublasDaxpy() // double precision

如果懒惰,最简单的解决办法就是复制粘贴方法

myFloatMethod(float var)
{
// do stuff in float
cublasSaxpy(var);
}

myDoubleMethod(double var)
{
// do stuff in double
cublasDaxpy(var);
}

我已经尝试搜索这个问题,我找到的唯一解决方案是全局定义这样的方法:

#define cublasTaxpy cublasSaxpy // or cublasDaxpy
#define DATATYPE float // or double

并使用 cublasTaxpy 代替 cublasSaxpy/cublasDaxpy。每次我想更改精度时,我只更改定义而无需重复代码或遍历整个代码。

有什么合适的方法可以做得更好吗?

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