gpt4 book ai didi

c++ - 为什么我调用 CUDA 数学库 sqrt() 函数失败?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:14 24 4
gpt4 key购买 nike

我是 Cuda 的新手,我有以下功能:

__global__ void square(float *myArrayGPU)
{
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
}

我想使用 cuda 数学库,我尝试了 #include "math.h" 但我仍然遇到错误

错误:不允许从 __global__ 函数(“square”)调用 __host__ 函数(“__sqrt”)

知道我应该包含什么库来使用 sqrt 吗?

最佳答案

threadIdx.x 是 int 类型。 CUDA 数学库仅针对单精度 (float) 和 double (double) 重载。您需要向 sqrt() 提供“float”或“double”类型参数,以便调用 sqrt() 的 CUDA 版本。

改变

myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);

进入

myArrayGPU[threadIdx.x] = sqrt( (float) threadIdx.x);

有关更多详细信息,请查看 CUDA sqrt() prototype documentation .

关于c++ - 为什么我调用 CUDA 数学库 sqrt() 函数失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311969/

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