Memory 我的CUDA纹理内存有多大?

Memory 我的CUDA纹理内存有多大?,memory,cuda,Memory,Cuda,如何解释deviceQuerysample输出的纹理内存信息以了解纹理内存大小? 这是我的纹理记忆的输出 最大纹理尺寸(x,y,z)1D=(65536),2D=(6553665535),3D=(204820482048) 最大分层纹理大小(dim)x层1D=(16384)x 2048,2D=(1638416384)x 2048 输出显示最大纹理尺寸为: 对于1D纹理65536 对于二维纹理65536*65535 对于三维纹理2048*2048*2048 如果需要以字节为单位的大小,请将其乘以最大

如何解释
deviceQuery
sample输出的纹理内存信息以了解纹理内存大小? 这是我的纹理记忆的输出

最大纹理尺寸(x,y,z)1D=(65536),2D=(6553665535),3D=(204820482048)
最大分层纹理大小(dim)x层1D=(16384)x 2048,2D=(1638416384)x 2048


输出显示最大纹理尺寸为:

对于1D纹理65536 对于二维纹理65536*65535 对于三维纹理2048*2048*2048

如果需要以字节为单位的大小,请将其乘以最大通道数(4)和最大亚像素大小(4B)

(对于分层纹理,将尺寸的相关数字乘以最大层数。)


但是,这是单个纹理的最大大小,而不是所有纹理的可用内存。

这是一个常见的误解,但CUDA GPU中没有“纹理内存”这样的东西。只有纹理,它们是通过专用硬件访问的全局内存分配,专用硬件具有内置缓存、过滤和寻址限制,这些限制会导致文档和设备查询中报告的大小限制。因此,限制大概是全局内存的可用量(允许CUDA数组中的填充和对齐),或者是您已经引用的维度限制

但假设我有一大块数据,那么我怎么知道它是否可以容纳在纹理内存中呢?为此,你需要查询空闲内存(cuMemGetInfo),而不是支持的最大内存。我有一个通过cudamaloc分配的大数组。此数组需要多次引用。我想在这里使用纹理记忆的特性。有可能吗?@username_4567:您可以将使用
cudamaloc
分配的线性内存绑定到一维纹理。如果你想要更高维的纹理,你需要使用倾斜线性内存或cuda数组。@talonmies by pitched linear memory你是指Cudamalocitch()分配的内存吗?@sgar91:是的,
Cudamalocitch
Cudamaloc3d
是分配倾斜线性内存的正常方式。