【问题标题】:Init GPU's single variable from CPU before kernel call在内核调用之前从 CPU 初始化 GPU 的单个变量
【发布时间】:2013-02-01 07:18:23
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

    标签: variables cuda initialization cpu gpu


    【解决方案1】:

    函数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;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多