cuda 2D 分层 tex 尺寸:太大?
cuda 2D layered tex size: too large?
如果代码在cuda中启动一个3D数组,大小为width = 809;高度 = 127;层数 = 2160;
cudaArray *sinor;
cudaExtent volumeSize = make_cudaExtent(809, 127, 2160);
const cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
gpuErrchk(cudaMalloc3DArray(&sinor, &channelDesc, volumeSize, cudaArrayLayered));
最后一行returns错误"invalid argument"错误。那是因为我的层数太多了吗?我试过1940,没问题。如果我不能做这么多层,这里的工作是什么?非常感谢。
您可以在文档here 上找到纹理层深度限制。正如您所推断的,分层纹理和表面的深度限制为 2048。
正如评论中所建议的那样,您唯一真正的解决方法是将数据拆分到多个纹理对象上,并根据虚拟组合纹理中的索引在对象之间select。
如果代码在cuda中启动一个3D数组,大小为width = 809;高度 = 127;层数 = 2160;
cudaArray *sinor;
cudaExtent volumeSize = make_cudaExtent(809, 127, 2160);
const cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>();
gpuErrchk(cudaMalloc3DArray(&sinor, &channelDesc, volumeSize, cudaArrayLayered));
最后一行returns错误"invalid argument"错误。那是因为我的层数太多了吗?我试过1940,没问题。如果我不能做这么多层,这里的工作是什么?非常感谢。
您可以在文档here 上找到纹理层深度限制。正如您所推断的,分层纹理和表面的深度限制为 2048。
正如评论中所建议的那样,您唯一真正的解决方法是将数据拆分到多个纹理对象上,并根据虚拟组合纹理中的索引在对象之间select。