在CUDA C中使用原子操作时出错

唐·科里昂

我以初学者的身份从事CUDA方面的工作,并试图执行一个预先编写的代码,编译为该代码包含的每个原子操作都给出了错误...例如

__global__ void MarkEdgesUV(unsigned int *d_edge_flag, unsigned long long int *d_appended_uvw, unsigned int *d_size, int no_of_edges)

{

    unsigned int tid = blockIdx.x*MAX_THREADS_PER_BLOCK + threadIdx.x;

    if(tid<no_of_edges)

    {

    if(tid>0)

        {

        unsigned long long int test = INF;

        test = test << NO_OF_BITS_MOVED_FOR_VERTEX_IDS;

        test |=INF;

        unsigned long long int test1 = d_appended_uvw[tid]>>(64-(NO_OF_BITS_MOVED_FOR_VERTEX_IDS+NO_OF_BITS_MOVED_FOR_VERTEX_IDS));

        unsigned long long int test2 = d_appended_uvw[tid-1]>>(64-(NO_OF_BITS_MOVED_FOR_VERTEX_IDS+NO_OF_BITS_MOVED_FOR_VERTEX_IDS));

        if(test1>test2)

            d_edge_flag[tid]=1;

        if(test1 == test)
            * atomicMin(d_size,tid); //also to know the last element in the array, i.e. the size of new edge list

        }

    else

        d_edge_flag[tid]=1;

    }

}

给出错误:错误:标识符“ atomicMin”未定义这是一个非常可靠的代码...我也检查了一下,原子的用法似乎是正确的....请解释为什么发生了错误?

西吉

我猜您仅使用nvcc进行编译(默认为sm_10),而没有指定所需的最低计算能力。实际上atomicMin(),在此表中可以看到,在具有CC1.1(计算功能1.1)的设备中已在32位上引入了全局存储器

尝试使用

nvcc -arch sm_11 ...

这将使atomicMin()功能得以识别。无论如何,最好为GPU的实际架构进行编译。

编辑:是特斯拉C2075 ,:

nvcc -arch sm_20 ...

应该也可以。

编辑:根据OP的要求,添加参考:

您可以在此处找到有关-arch-code选项含义的非常详细的说明

特别是,明确报告了-arch和-code选项都可以省略

nvcc x.cu

是短手

nvcc x.cu -arch=compute_10 -code=sm_10,compute_10

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译时在cuda内核中使用__ldg时出错

来自分类Dev

在编译时在cuda内核中使用__ldg时出错

来自分类Dev

CUDA中的原子操作失败

来自分类Dev

CUDA 原子操作线程还是块级?

来自分类Dev

CUDA 中的原子块

来自分类Dev

使用CUDA调试时的CUDA堆栈大小

来自分类Dev

布尔变量的原子增量(CUDA)

来自分类Dev

CUDA / OpenGL互操作,使用CUDA绘制到OpenGL纹理

来自分类Dev

MATLAB CUDA内核对象-使用聚集时出错?

来自分类Dev

MATLAB CUDA内核对象-使用聚集时出错?

来自分类Dev

安装Cuda Toolkit Ubuntu 16.04时出错

来自分类Dev

分段错误C ++ Cuda

来自分类Dev

Cuda数学与C ++数学

来自分类Dev

使用多个CUDA GPU

来自分类Dev

使用CUDA生成排列

来自分类Dev

使用VirtualBox的主机CUDA?

来自分类Dev

CUDA 共享内存问题(以及在 python/ctypes 中使用 CUDA)

来自分类Dev

我们不能对CUDA中的浮点变量使用原子操作吗?

来自分类Dev

使用CUDA原子操作和网格同步处理共享工作队列

来自分类Dev

不同场景下的CUDA原子操作性能

来自分类Dev

在CUDA统一内存多GPU或多处理器中使用原子算术运算

来自分类Dev

CUDA总是抛出错误

来自分类Dev

在CUDA中使用较少的线程时,阵列复制速度更快

来自分类Dev

CUDA 9.1安装后操作

来自分类Dev

在C#中使用外部C / C ++ CUDA库

来自分类Dev

使用CUDA内核进行数组操作

来自分类Dev

我如何在nodejs中使用cuda

来自分类Dev

如何在CUDA内核中使用Eigen

来自分类Dev

如何在CUDA中使用指针