CUDA 中 atomicAdd 函数使用指南:无需额外库文件
在 CUDA 中调用 'atomicAdd' 函数无需特别配置库文件,只需要包含 'cuda_runtime.h' 头文件即可。'atomicAdd' 函数是 CUDA 运行时库中的一部分,所以只要安装了 CUDA 开发工具包,就可以直接使用该函数。
以下是一个示例代码:
#include <stdio.h>
#include <cuda_runtime.h>
__global__ void kernel(int* array)
{
int tid = threadIdx.x + blockIdx.x * blockDim.x;
atomicAdd(&array[0], tid);
}
int main()
{
int array[1] = {0};
int* d_array;
cudaMalloc((void**)&d_array, sizeof(int));
cudaMemcpy(d_array, array, sizeof(int), cudaMemcpyHostToDevice);
kernel<<<1, 256>>>(d_array);
cudaMemcpy(array, d_array, sizeof(int), cudaMemcpyDeviceToHost);
printf("Result: %d\n", array[0]);
cudaFree(d_array);
return 0;
}
在上述代码中,我们使用 'atomicAdd' 函数对数组的第一个元素进行原子加操作。在编译时,只需使用 'nvcc' 命令编译即可:
nvcc atomicAdd.cu -o atomicAdd
然后运行可执行文件即可。
注意:在使用 'atomicAdd' 函数时,需要确保代码在支持原子操作的设备上运行,否则可能会导致错误。
原文地址: https://www.cveoy.top/t/topic/pimH 著作权归作者所有。请勿转载和采集!