CUDA编程基础——内存分配

本文介绍cuda编程中cudaMalloc和cudaMemcpy。

#include 
#include "book.h"
__global__ void add( int a, int b, int *c ) {
    *c = a + b;
}
int main( void ) {
    int c;
    int *dev_c;
    HANDLE_ERROR( cudaMalloc( (void**)&dev_c, sizeof(int) ) );
    add<<<1,1>>>( 2, 7, dev_c );
    HANDLE_ERROR( cudaMemcpy( &c, dev_c, sizeof(int), cudaMemcpyDeviceToHost ));
    printf( "2 + 7 = %d\n", c );
    cudaFree( dev_c );
    return 0;
}

首先声明了一个dec_c变量,是存储在CPU内存中的指针变量的地址,cudaMalloc在执行完成后,向这个地址写入了一个地址值(此地址值是GPU显存里的)。
cudaMemcpy拷贝内存,可以从host到device也可以从device到host,根据参数来配置。

你可能感兴趣的:(CUDA编程基础——内存分配)