如果代码在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));
最后一行返回错误“invalid argument”错误。那是因为我的层数太大了吗?我试过1940年,很好。如果我不能做这么多层,那么这里的工作是什么?非常感谢。
答案 0 :(得分:1)
您可以在文档here上找到纹理图层深度限制。如您所推断,分层纹理和曲面的深度限制为2048。
正如评论中所建议的,这里唯一真正的解决方法是将数据分割到多个纹理对象上,并根据虚拟组合纹理中的索引在对象之间进行选择。