#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <iostream>
__global__ void add(int a, int b , int* c)
{
*c = a + b;
}
int main()
{
int c;
int* dev_c;
//为变量分配内存,任何设备上执行的有用的操作都需要分配内存,例如将计算值返回给主机
//该函数返回的是void*,一定不能在主机代码中对该函数返回的指针进行解引用,绝对不可以使用这个指针来读取或者写内存。要执行这些操作都要在设备代码中
//可以将主机指针传递给设备代码,但是如果要用这个指针来访问设备内存一样会出问题
cudaMalloc( (void**)&dev_c, sizeof(int) );
//传递参数给核函数,就像C一样
add<<<1,1>>>(2,7,dev_c);
//第一个参数是主机指针
//第二个参数是设备指针
//第四个参数是用来指出哪个是主机指针哪个是设备指针
cudaMemcpy(
&c,
dev_c,
sizeof( int ),
cudaMemcpyDeviceToHost
);
printf("2 + 7 = %d\n", c);
cudaFree( dev_c );//不能使用C的free来释放内存,必须使用cudaFree函数
getchar();
return 0;
}
CUDA-CODE2-分配内存
最新推荐文章于 2024-04-07 12:58:17 发布