在内核调用之前从 CPU 初始化 GPU 的单个变量



在我的应用程序中,GPU的内存中有bool类型的变量(bool isBoardReady),我需要在kernel调用之前初始化它,然后在内核完成后,取回值,所以我的问题是

  1. 如何从CPU初始化GPU内存中的单个变量(int, bool , double等)?

  2. 内核调用结束后如何获取该变量的值

提前感谢

函数cudaMemcpyToSymbolcudaMemcpyFromSymbol用于从主机访问全局设备变量。以下是如何实现这一点的示例:
#include <iostream>
#include <cuda_runtime.h>
__device__ bool isBoardReady;
__global__ void kernel()
{
    isBoardReady = true;
}
int main()
{
    bool isBoardReady_Host = false;
    std::cout<<"Before = "<<isBoardReady_Host<<std::endl;
    cudaMemcpyToSymbol(isBoardReady,&isBoardReady_Host,sizeof(bool),0,cudaMemcpyHostToDevice);
    kernel<<<1,1>>>();
    cudaMemcpyFromSymbol(&isBoardReady_Host,isBoardReady,sizeof(bool),0,cudaMemcpyDeviceToHost);
    std::cout<<"After = "<<isBoardReady_Host<<std::endl;
    return 0;
}

最新更新