c++ - 如何在 CUDA/C++ 中使用 atomicMin()
问题描述
我尝试使用atomicMin
线程共享内存在 CUDA/C++ 中使用函数,无论我输入什么数组,输出始终为“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
然后忽略它。
推荐阅读
- mysql - MySQL VARCHAR 或 TEXT
- jquery - 检测空列以修改 Bootstrap 3 网格
- coldfusion - 如何有条件地将参数传递给 CFC 的实例?
- jquery - Jquery悬停在Draggable Div后如何恢复到原始CSS和Html?
- google-chrome - googCurrentDelayMs 是什么意思,哪些设置会影响它的值?
- python - 使用间隔索引在 DataFrame 中设置特定值
- mysql - 如何从另一个表中获取值
- amazon-web-services - AWS SAM 模板 - 定义由 API Gateway 触发的 SQS 队列
- c - 使用多维数组 C 获取 5 个学生的平均值
- list - 从 AppleScript 的列表中选择多个项目