cuda中有模板化的数学函数吗
Are there templated math functions in cuda?
我一直在cuda中寻找模板化的数学函数,但似乎找不到。在普通c++中,如果我调用std::sqrt
,它将被模板化,并将根据参数是浮点还是双精度执行不同的版本。
我想要这样的CUDA设备代码。我的内核将real类型作为模板参数传递,现在我必须在使用sqrtf
表示float和使用sqrt
表示double之间进行选择。我原以为推力可能有这个特性,但它只适用于复数。
[将注释、已删除的答案和一些额外的历史记录转换为答案,以将其从CUDA标签的未应答队列中删除,请根据需要进行编辑和修改]
TLDR;是
最初的基于Open64的工具链在2008-2009年期间添加了不错的模板支持(使Kotrade和后来的Thrust成为可能),而现代前端实际上是C++的一个子集。由于从CUDA2开发周期的某个阶段开始,模板支持和主机C++编译就已经融入了工具链,因此支持代码和数学库已经在一个完全基于模板的重载系统中发展。
因此,CUDA中的标准数学函数是根据参数类型重载的,因此可以编写sqrt(float)
来计算单精度平方根,或者编写sqrt(double)
来计算双精度平方根。
CUDA文档中对此进行了说明。
相关文章:
- CUDA内核和数学函数的显式命名空间
- 将 2D 推力::d evice_vector 复矩阵传递给 CUDA 内核函数
- 编译 CUDA 与数学函数的叮当
- CUDA:重载函数"isnan"的多个实例
- c++ cuda:cudaMalloc在构造函数之外的托管访问
- CUDA 全局函数未正确添加某些索引的数组值
- CUDA __device__函数的 JIT 编译
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?
- GCC(通过 CUDA)内部函数的编译器错误,但我没有使用任何
- 如何将函数作为CUDA内核参数传递
- 推力(cuda)错误:无法使用给定参数列表调用函数
- 如何在 CUDA 中的内核函数中乘以两个 openCV 矩阵?
- CUDA 模板错误:没有与参数列表匹配的函数模板实例
- 如何在C 中声明外部CUDA函数模板
- Microsoft Visual Studio发现我所有的CUDA设备端函数都有错误
- OpenCV CUDA 函数缺失 - 命名空间"cv:cuda"没有成员"resize"
- 从全局 CUDA 函数返回数据
- 哪个函数返回 cuda/nvml 库中"nvmlDevice_t"类型变量?
- 如何在单独的CUDA函数中分配GPU内存