2013-02-16 1 views
2

В моем приложении у меня есть переменная типа bool в памяти GPU (bool isBoardReady), мне нужно инициализировать ее перед вызовом kernel, а затем после завершения ядра вернуть значение обратно. вопрос в том,Единственная переменная GPU от CPU до вызова ядра

  1. Как инициализировать одну переменную (int, bool , double и т.д.) в памяти графического процессора от процессора?

  2. Как получить значение этой переменной после вызова ядра заканчивается

Заранее спасибо

ответ

5

Функции 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; 

} 
+0

Отлично, спасибо :) –

Смежные вопросы