本文介绍cuda编程中cudaMalloc和cudaMemcpy。
#include <iostream>
#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,根据参数来配置。
网友评论