CUDA 入门笔记-3 -静态全局内存__device__

device

全局内存是GPU中最大,延迟最高但是最常使用的内存。一个全局内存变量可以被静态声明。修饰符为__device__

静态变量使用例程

#include <stdio.h>
#include <cuda_runtime.h>
#include <sys/time.h>

__device__ float devData;

__global__ void testStaticDev(){
	printf("Data in Device:%f \n",devData);
	devData += 2.0f;
}

int main(int argc,char ** argv){
	float tmp = 2.0f;
	cudaMemcpyToSymbol(devData,&tmp,sizeof(float));//从主机端向设备内存中复制数据
	testStaticDev<<<1,1>>>();
	cudaMemcpyFromSymbol(&tmp,devData,sizeof(float));//从设备中复制到主机端
	printf("Data after changing in Device:%f \n",tmp);
	cudaDeviceReset();
	return 0;
}

使用如下方法
在这里插入图片描述无法给devData赋值,因为在主机端的设备变量devData仅仅是一个在GPU上的表示位置的物理符号。我们可以通过如下的方法获取devData的地址。
在这里插入图片描述所以,也可以用如下的方法进行赋值:
在这里插入图片描述
固定内存可以简单的通过指针直接访问。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值