如何在CUDA/C 中使用Atomicmin()

how to use atomicMin() in CUDA/C++

本文关键字:Atomicmin CUDA      更新时间:2023-10-16

我尝试使用共享内存在CUDA/C 中使用atomicMin函数,无论我输入的数据如何,输出始终是0。任何人都可以帮助我解决此问题,如果语法中有一些错误或我对指针的使用情况,或者我可能正在错误地使用该函数。

这是代码:

__global__ void npd(int *a, int *g)         
{   
    int index = threadIdx.x;
    __shared__ int d[N];
    d[threadIdx.x]=a[index];        
    __syncthreads();        
    int dd;
    int inn;
    int u;
    if( 0==threadIdx.x )
    { 
        for( int u = 0; u<16; u++ )
        {
            atomicMin( g, d ) ;     
        }
    }
}

正如文档所描述的那样,该函数的第二个输入应为值,而不是指针。

您尚未对您的功能的描述进行任何描述,因此我不禁修复它,而是

之类的东西
atomicMin( g, d[0]) ;

会编译,可能不做您在这里的目标。

注意:始终发布完整的编译示例。并尝试整理您的代码。u有一个双重定义,并且声明了变量index,但从未使用过。