【CUDA开发】CUDA面内存拷贝用法总结

标签(空格分隔): 【CUDA开发】


主要是在调试CUDA硬解码并用D3D9或者D3D11显示的时候遇到了一些代码,如下所示:

CUdeviceptr    g_pRgba = 0;
CUDA_MEMCPY2D memcpy2D = { 0 };
memcpy2D.srcMemoryType = CU_MEMORYTYPE_DEVICE;
memcpy2D.srcDevice = g_pRgba;
memcpy2D.srcPitch = nWidth * 4;
memcpy2D.dstMemoryType = CU_MEMORYTYPE_ARRAY;
memcpy2D.dstArray = array;
memcpy2D.dstPitch = nWidth * 4;
memcpy2D.WidthInBytes = nWidth * 4;
memcpy2D.Height = nHeight;// clear the surface to solid white
checkCudaErrors(cuMemcpy2D(&memcpy2D));

将设备内存g_pRgba中的数据拷贝到面内存中;还有另外一种情况:

src GMEM pointer : dpSrc
src GMEM layout  : 100x100
dst GMEM pointer : dpDst
dst GMEM layout  : 50*50
将src GMEM按行序初始化为:0~9999的值
CUDA_MEMCPY2D planeMem;
memset(&planeMem,0,sizeof(planeMem));
planeMem.srcMemoryType=CU_MEMORYTYPE_DEVICE;
planeMem.srcDevice    =dpSrc;
planeMem.srcXInBytes  =25*sizeof(float);
planeMem.srcY         =25;
planeMem.srcPitch     =100*sizeof(float);
planeMem.dstMemoryType=CU_MEMORYTYPE_DEVICE;
planeMem.dstDevice    =dpDst;
planeMem.dstXInBytes  =0;
planeMem.dstY         =0;
planeMem.dstPitch     =50*sizeof(float);
planeMem.WidthInBytes =planeMem.dstPitch;
planeMem.Height       =50;
cuMemcpy2DUnaligned(&planeMem); //如果数据已经对齐则最好使用cuMemcpy2D,否则必须使用该函数,另外当内存是使用cuMemAllocPitch分配的时候,如果内存布局本事不是2的次幂,则需要将planeMem的srcPitch和dstPitch设置为通过cuMemAllocPitch得到的pitch参数,而不是内存本身的布局大小*sizeof(TYPE)

2017-01-26 23:28
张朋艺 pyZhangBIT2010@126.com

转载于:https://www.cnblogs.com/huty/p/8517368.html

【CUDA开发】CUDA面内存拷贝用法总结相关推荐

  1. CUDA:CUDA内核中内联PTX(汇编语言)用法的实例

    CUDA:CUDA内核中内联PTX(汇编语言)用法的实例 // System includes #include <stdio.h> #include <assert.h>// ...

  2. 【CUDA开发】CUDA的安装、Nvidia显卡型号及测试

    说明:想要让Theano在Windows8.1下能利用GPU并行运算,必须有支持GPU并行运算的Nvidia显卡,且要安装CUDA,千万不要电脑上是Intel或AMD的显卡,却要编写CUDA. 文中用 ...

  3. 显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理

    显卡.显卡驱动.CUDA.CUDA Toolkit.cuDNN 梳理 转自:https://www.cnblogs.com/marsggbo/p/11838823.html#nvccnvidia-sm ...

  4. 一篇文章清晰了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)

    背景 开发过程中需要用到GPU时,通常在安装配置GPU的环境过程中遇到问题:比如:安装TensorFlow2.1过程中,想要使用到电脑的显卡来进行开发,但是发现默认需要CUDATOOLKIT=10.1 ...

  5. 了解NVIDIA显卡驱动(包括CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)

    背景 开发过程中需要用到GPU时,通常在安装配置GPU的环境过程中遇到问题:CUDA Toolkit和CUDNN版本的对应关系:CUDA和电脑显卡驱动的版本的对应关系:CUDA Toolkit.CUD ...

  6. 了解NVIDAI显卡驱动(包括:CUDA、CUDA Driver、CUDA Toolkit、CUDNN、NCVV)

    转载 一篇 背景 开发过程中需要用到GPU时,通常在安装配置GPU的环境过程中遇到问题:CUDA Toolkit和CUDNN版本的对应关系:CUDA和电脑显卡驱动的版本的对应关系:CUDA Toolk ...

  7. OpenCV源码解读:Mat与GpuMat的内存拷贝(copyTo和clone)

    前言 OpenCV基础类型Mat以及GPU上的GpuMat是整个OpenCV工程体系中两种非常基础常用的类型.通常情况下Mat拥有的方法,GpuMat都会有对应的方法.对于内存拷贝,有两个常用的方法c ...

  8. 显卡,GPU,显卡驱动,CUDA ,CUDA Toolkit之间的关系

    相关知识收集于网络,主要来自 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? GPU 和显卡是什么关系? 显卡.显卡驱动.cuda 之间的关系是什么 ...

  9. CUDA、CUDA toolkit、CUDNN、NVCC关系

    CUDA:为"GPU通用计算"构建的运算平台. cudnn:为深度学习计算设计的软件库. CUDA Toolkit (nvidia): CUDA完整的工具安装包,其中提供了 Nvi ...

最新文章

  1. c语言节点导入数据编程,编程小白。用C语言计算SR E2E ARQ模式下节点的数据分析...
  2. CentOS使用sudo提示用户不在sudoers文件中的解决方法
  3. IOS学习动画二之 Core Animation (3)
  4. WebCenter Space中配置使用WSRP Portlet
  5. 搜索引擎索引之索引基础
  6. AngularJS中关于ng-class和*ngIf指令
  7. python计算排队时间_python计算排队时间_Python(pdb)-排队执行命令
  8. vue.js 模板语法
  9. tensorflow2.0五种机器学习算法对中文文本分类
  10. android改变textview文字,如何在Android TextView中更改文本
  11. python客户端软件开发_用 Python 实现一个简易版 HTTP 客户端
  12. Anaconda出现Navigator Error的解决办法
  13. 动态规划——状态转移方程
  14. CSS解读之box-sizing属性
  15. PDF拆分页面的方法,如何拆分PDF页面
  16. 股票做空机构-浑水公司
  17. vlan划分-通过物理接口实现vlan通信
  18. C# winform 检测网络是否畅通 检测
  19. 新媒体广告投放的知识要点解析
  20. 十进制数与8421码、5421码、2421码以及余3码之间的部分转换

热门文章

  1. php拉取公众号所有关注的人,微信公众平台开发获取关注者列表
  2. 跳出当前_活在当下,跳出当下
  3. pic10f220 c语言,PIC10F200 LED流水灯程序
  4. 计算机控制技术与自动化的关系,计算机控制技术东南大学自动化学院.ppt
  5. HBuilder、HBuilderX连接夜神模拟器
  6. [二叉树] 二叉树中的最大路径和---leetcode124
  7. Git中Add后对部分文件进行取消
  8. ios 图像翻转_在iOS 14中使用计算机视觉的图像差异
  9. flask渲染图像_用于图像推荐的Flask应用
  10. C语言高级编程:i++与++i区别