/ /分配主机内存
unsigned int类型的numBytes = N *的sizeof(浮动)
浮动* h_A =(浮动*)malloc的(以numBytes);
/ /分配设备内存
浮动* D_A = 0;
cudaMalloc((无效**)&D_A,以numBytes);
/ /复制从主机到设备的数据
对cudaMemcpy(D_A h_a,数组的numBytes,cudaMemcpyHostToDevice);
/ /执行内核
Increment_gpu <<<Ñ/块大小,块大小>>>(D_A,B);
/ /复制从设备返回到主机的数据
对cudaMemcpy(h_a,数组D_A,以numBytes,cudaMemcpyDeviceToHost);
/ /释放设备内存
cudaFree( D_A);
执行 的: | 只调用 从: | |
__device__浮动DeviceFunc() | 设备 | 设备 |
__global__无效KernelFunc() | 设备 | 主持人 |
__host__浮动HostFunc() | 主持人 | 主持人 |
--->必须返回void
2, __device__和__ host__可以一起使用
3, __device__函数不能取其地址
4, 对于设备上执行的功能:
没有递归(递归)
在函数内部没有静态变量声明
无可变数目的参数
记忆 | 范围 | 一生 | |
__shared__诠释SharedVar; | 共享 | 线程块 | 线程块 |
__device__诠释GlobalVar; | 全球 | 格 | 应用 |
__constant__诠释ConstantVar; | 不变 | 格 | 应用 |
除驻留在本地内存中大型结构或数组
2,指针可以指向分配或声明的任何全局存储器
或共享内存:
2.1Global内存:
内存分配在主机和传递给内核:
获得作为一个全局变量的地址
2.2Shared记忆:在通话过程中静态分配