首页 > 其他 > 详细

如何理解CUDA中的cudaMalloc()的参数

时间:2014-07-22 23:14:43      阅读:557      评论:0      收藏:0      [点我收藏+]

首先看下此运行时函数的原型:

cudaError_t cudaMalloc (void **devPtr, size_t  size ); 

主要的第一个参数。为什么是两个星星呢?用个例子来说明下。

float *device_data=NULL;
size_t size = 1024*sizeof(float);
cudaMalloc((void**)&device_data, size);

例子中:

我在显存中申请了一个包含1024个元素的float数组。而device_data这个指针是存储在主存上的。之所以取device_data的地址,是为了将cudaMalloc在显存上获得的数组首地址赋值给device_data。在函数中为形参赋值是不会在实参中繁盛变化的,但是指针传递的是地址,我们操作了某个地址的数据,实际上是真的改变了指定地址的数据。像这个申请显存的函数,第一个参数传递的是device_data这个指针的地址,然后改变这个地址的内容就会带给实参真正的改变。

如何理解CUDA中的cudaMalloc()的参数

原文:http://www.cnblogs.com/yexuannan/p/3514461.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!