【CUDA开发】CUDA面内存拷贝用法总结
生活随笔
收集整理的這篇文章主要介紹了
【CUDA开发】CUDA面内存拷贝用法总结
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【CUDA開發(fā)】CUDA面內(nèi)存拷貝用法總結(jié)
標(biāo)簽(空格分隔): 【CUDA開發(fā)】
主要是在調(diào)試CUDA硬解碼并用D3D9或者D3D11顯示的時(shí)候遇到了一些代碼,如下所示:
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));將設(shè)備內(nèi)存g_pRgba中的數(shù)據(jù)拷貝到面內(nèi)存中;還有另外一種情況:
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); //如果數(shù)據(jù)已經(jīng)對(duì)齊則最好使用cuMemcpy2D,否則必須使用該函數(shù),另外當(dāng)內(nèi)存是使用cuMemAllocPitch分配的時(shí)候,如果內(nèi)存布局本事不是2的次冪,則需要將planeMem的srcPitch和dstPitch設(shè)置為通過(guò)cuMemAllocPitch得到的pitch參數(shù),而不是內(nèi)存本身的布局大小*sizeof(TYPE)2017-01-26 23:28
張朋藝 pyZhangBIT2010@126.com
轉(zhuǎn)載于:https://www.cnblogs.com/huty/p/8517368.html
總結(jié)
以上是生活随笔為你收集整理的【CUDA开发】CUDA面内存拷贝用法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OS: Redhat8.4 更换网络源
- 下一篇: CentOS7时间设置问题