私のアプリケーションでは、GPUのメモリにbool型の変数があります(bool isBoardReady
)。呼び出す前に初期化する必要がありkernel
ます。カーネルが終了した後、値を取得します。したがって、私の質問は
int, bool , double
CPUからGPUのメモリ内の単一変数(など)を初期化する方法は?カーネルの呼び出しが終了した後にこの変数の値を取得する方法
前もって感謝します
私のアプリケーションでは、GPUのメモリにbool型の変数があります(bool isBoardReady
)。呼び出す前に初期化する必要がありkernel
ます。カーネルが終了した後、値を取得します。したがって、私の質問は
int, bool , double
CPUからGPUのメモリ内の単一変数(など)を初期化する方法は?
カーネルの呼び出しが終了した後にこの変数の値を取得する方法
前もって感謝します
関数cudaMemcpyToSymbol
とcudaMemcpyFromSymbol
は、ホストからグローバルデバイス変数にアクセスするために使用されます。これを実現する方法の例を次に示します。
#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;
}