相关疑难解决方法(0)

cuda 中是否有模板化的数学函数?

我一直在 cuda 中寻找模板化数学函数,但似乎找不到。在普通的 C++ 中,如果我调用std::sqrt它是模板化的,并且将根据参数是浮点数还是双精度数来执行不同的版本。

我想要这样的 CUDA 设备代码。我的内核将真实类型作为模板参数传递,现在我必须在使用sqrtffloat 和sqrtdouble之间进行选择。我认为推力可能具有此功能,但它仅适用于复数。

c++ cuda

5
推荐指数
1
解决办法
517
查看次数

PyCUDA:设备代码中的Pow试图使用std :: pow,失败

问题或多或少都说明了一切.

calling a host function("std::pow<int, int> ") from a __device__/__global__ function("_calc_psd") is not allowed
Run Code Online (Sandbox Code Playgroud)

从我的理解,这应该是使用cuda pow功能,但事实并非如此.

python cuda pow pycuda

4
推荐指数
1
解决办法
1291
查看次数

在__global__函数中使用CUDA数学函数 - Nsight Eclipse Edition

我试图在__global__函数中使用数学函数(pow),但是我得到了这个错误:

 calling a __host__ function("std::pow<float, double> ") from a __global__ function is not allowed
Run Code Online (Sandbox Code Playgroud)

我试图检查项目属性下的"使用快速数学库"复选框 - >构建 - >设置 - >工具设置 - >优化,没有运气.

我检查了pow函数内部的类型,两者都是浮点数,我还包括这些头文件:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <math.h>
#include <sys/times.h>
#include <sys/resource.h>
#include <limits.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#include "utils.h"
Run Code Online (Sandbox Code Playgroud)

也没有使用命名空间std

有想法该怎么解决这个吗?

cuda

3
推荐指数
1
解决办法
5317
查看次数

带有整数参数的CUDA pow函数

我是CUDA的新手,无法理解我做错了什么.

我正在尝试计算它在数组中具有id的对象的距离,数组中的轴x和数组中的轴y以找到每个对象的邻居

__global__ 
void dist(int *id_d, int *x_d, int *y_d, 
              int *dist_dev, int dimBlock, int i)
{
    int idx = threadIdx.x + blockIdx.x*blockDim.x;

    while(idx < dimBlock){
        int i;
        for(i= 0; i< dimBlock; i++){
            if (idx == i)continue;
            dist_dev[idx] = pow(x_d[idx] - x_d[i], 2) + pow(y_d[idx] - y_d[i], 2); // error here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

pow不是在内核代码中定义的?

cuda gpgpu

1
推荐指数
1
解决办法
4446
查看次数

标签 统计

cuda ×4

c++ ×1

gpgpu ×1

pow ×1

pycuda ×1

python ×1