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。