cudabindTextureToArray问题

guoboxue986235 2011-04-10 05:11:41
大家好,我碰到一个奇怪的问题,就是:我用cudabindTextureToArray()数组绑定到纹理后,我下面程序的所有kernel都不执行了,不知道是为什么,太奇怪了。大概代码如下 ,谢谢:

.h中: texture<uchar4, 2, cudaReadModeElementType> m_texRef; //2D float textrue;

udaChannelFormatDesc m_channelDesc; //纹理类型

cudaArray *m_pImageInArray; //纹理绑定的数组空间
.cpp中:
//为cuda array 分配空间
m_channelDesc = cudaCreateChannelDesc(8, 8, 8, 8, cudaChannelFormatKindUnsigned);
CUDA_SAFE_CALL(cudaMallocArray(&m_pImageInArray, &m_channelDesc, m_pInfo->nSrcWidth, m_pInfo->nSrcHeight));

//设置纹理参数
m_texRef.addressMode[0] = cudaAddressModeWrap;
m_texRef.addressMode[1] = cudaAddressModeWrap;
m_texRef.filterMode = cudaFilterModeLinear;
m_texRef.normalized = false;


CUDA_SAFE_CALL(cudaBindTextureToArray( m_texRef,m_pImageInArray, m_channelDesc));//数组绑定到纹理

就是下面最后一句话只是运行,我程序再下面的kernel都不执行了,但如何注释掉这句,下面的kernel就是好的。

搞了好久,都不知道什么原因,谢谢!m_pInfo->nSrcWidth = 2048,m_pInfo->nSrcHeight = 768;
...全文
2167 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ateddy 2013-02-19
  • 打赏
  • 举报
回复
这个是texture定义时错了,所以bind不上。 texture定义时前面是unsign char型时,后面必须用cudaReadModeNormalizedFloat,如果用默认的 cudaReadModeElementType就出错了。注意用了cudaReadModeNormalizedFloat后0到255被归一化到0到1了
charlese_changlibo 2012-05-11
  • 打赏
  • 举报
回复
看看simpleTexture3D例子吧。
ylgod 2011-10-11
  • 打赏
  • 举报
回复
我也遇到这个问题了,应该是调用这个函数之前应初始化一些东西,至于哪些东西,我也不清楚!求高手!
huoyingxiang2 2011-09-24
  • 打赏
  • 举报
回复
最近遇到同样问题了,不知道楼主解决没有?

231

社区成员

发帖
与我相关
我的任务
社区描述
CUDA on Windows XP
社区管理员
  • CUDA on Windows XP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧