首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUDA Texture2D问题

CUDA Texture2D问题
EN

Stack Overflow用户
提问于 2012-12-28 10:50:58
回答 1查看 303关注 0票数 1

我很难从二维纹理中提取

代码语言:javascript
复制
texture<float2, cudaTextureType2D, cudaReadModeElementType> tex;
// ...
assert(cudaMallocPitch(&imgcov2_device, &pitch, sizeof(ComplexFloat)*x*y*z, N*N) == cudaSuccess);
cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float2>();
tex.addressMode[0] = cudaAddressModeClamp;
tex.addressMode[1] = cudaAddressModeClamp;
tex.filterMode = cudaFilterModePoint;
tex.normalized = false;
assert(cudaBindTexture2D(NULL, tex, imgcov2_device, channelDesc, x*y*z, N*N, x*y*z*N*N*sizeof(ComplexFloat)) == cudaSuccess);
// ...
tmp = ComplexFloatAdd(tmp, ComplexFloatMul(y[j + i*N], tex2D(tex, blockIdx.x * blockDim.x + threadIdx.x, threadIdx.y + j*N))); //fetch

我确信,tex2D的最后2个参数在[0,x*y*z-1][0,N*N-1]范围内。在another post中,建议使用高音内存,但我没有运气。有什么想法吗?令人费解的是,当x_y_z = 90000,N_N = 32^2,而N_N = 8^2时,它不会失败。只有提取失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 11:19:20

当将音调线性存储器绑定到2D纹理时,始终使用cudaMallocPitch返回的音调作为cudaBindTexture2D的最后一个参数。

在你的例子中,你会这样做:

代码语言:javascript
复制
cudaBindTexture2D(NULL, tex, imgcov2_device, channelDesc, x*y*z, N*N, pitch);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14068366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档