【问题标题】:What is the size of my CUDA texture memory?我的 CUDA 纹理内存有多大?
【发布时间】:2012-09-02 15:29:19
【问题描述】:

如何解读deviceQuery样本输出的纹理内存信息,了解纹理内存大小? 这是我的纹理内存的输出。

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

【问题讨论】:

    标签: memory cuda


    【解决方案1】:

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

    对于一维纹理 65536 对于 2D 纹理 65536*65535 对于 3D 纹理 2048*2048*2048

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

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

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

    【讨论】:

    • 但是假设我有大量数据,那么我怎么知道它是否可以容纳在纹理内存中?
    • 为此您需要查询可用内存(cuMemGetInfo),不支持最大。
    【解决方案2】:

    这是一个常见的误解,但 CUDA GPU 中不存在“纹理内存”之类的东西。只有纹理,它们是通过具有内置缓存、过滤和寻址限制的专用硬件访问的全局内存分配,这导致您在文档和设备查询中看到报告的大小限制。所以限制要么是大致全局内存的可用量(允许在 CUDA 数组中进行填充和对齐),要么是您已经引用的尺寸限制。

    【讨论】:

    • 我有一个通过 cudaMalloc 分配的大数组。这个数组需要多次引用。我想在这里使用纹理内存的功能。有可能吗?
    • @username_4567:您可以将分配给cudaMalloc 的线性内存绑定到一维纹理。如果你想要更高维度的纹理,你需要使用倾斜的线性内存或 cuda 数组。
    • @talonmies by pitched linear memory 你的意思是 cudaMalocPitch() 分配的内存吗?
    • @sgar91: 是的,cudaMallocPitchcudaMalloc3D 是分配倾斜线性内存的正常方式。
    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2011-07-26
    • 2011-03-24
    • 2013-01-11
    • 2012-11-04
    • 2012-07-13
    相关资源
    最近更新 更多