全局变量是用来串联GPU中各个单元中计算数据的方法之一。

#include <cuda_runtime.h>
#include <stdio.h>
__device__ float devData;
__global__ void checkGlobalVariable()
{
    printf("Device: The value of the global variable is %f\n",devData);
    devData += 2.0;
}
int main()
{
    float value=1.0;
    cudaMemcpyToSymbol(devData, &value, sizeof(float));
    printf("Host: copy %f to the global variable\n",value);
    checkGlobalVariable<<<1, 1>>>();
    cudaMemcpyFromSymbol(&value, devData, sizeof(float));
    printf("Host: the value changed by the kernel to %f \n",value);
    cudaDeviceReset();
    return EXIT_SUCCESS;
}

将上面代码保存为global_var.cu,然后编译运行:

nvcc -o global_var global_var.cu
./global_var

完成了用全局变量进行1+2的操作。