我尝试使用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 ) ;
}
}
}
As the documentation describes,函数的第二个输入应该是值,而不是指针。
你没有给出你的功能的任何描述,所以我无法帮助解决它,但是类似的东西
atomicMin( g, d[0]) ;
将编译,可能不会做你在这里的目标。
注意:始终发布完整的可编译示例。并尝试整理您的代码。有一个u
的双重定义,你声明变量index
然后忽略它。