如何在CUDA / C ++中使用atomicMin()

问题描述 投票:-3回答:1

我尝试使用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 ) ;     
        }
    }
}
c++ cuda gpu shared-memory atomic
1个回答
1
投票

As the documentation describes,函数的第二个输入应该是值,而不是指针。

你没有给出你的功能的任何描述,所以我无法帮助解决它,但是类似的东西

atomicMin( g, d[0]) ;

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

注意:始终发布完整的可编译示例。并尝试整理您的代码。有一个u的双重定义,你声明变量index然后忽略它。

© www.soinside.com 2019 - 2024. All rights reserved.