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

Hay*_*yan 2 variables cpu cuda gpu initialization

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

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

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

提前致谢

sga*_*zvi 5

功能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;

}
Run Code Online (Sandbox Code Playgroud)