2

私のアプリケーションでは、GPUのメモリにbool型の変数があります(bool isBoardReady)。呼び出す前に初期化する必要がありkernel ます。カーネルが終了した後、値を取得します。したがって、私の質問は

  1. int, bool , doubleCPUからGPUのメモリ内の単一変数(など)を初期化する方法は?

  2. カーネルの呼び出しが終了した後にこの変数の値を取得する方法

前もって感謝します

4

1 に答える 1

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;

}
于 2013-02-16T11:32:02.180 に答える