gpt4 book ai didi

c - 如何从全局内存或纹理内存中获取 16 字节

转载 作者:行者123 更新时间:2023-11-30 15:37:33 27 4
gpt4 key购买 nike

我还没有尝试过这个,因为我不确定如何实现这个,并且想知道这是否可能。

我读到了有关 int4 类型的信息,我想知道,由于我的每个线程都需要在 tId(数组)的 1 字节内存上进行操作,然后处理接下来的 15 个字节,我是否可以将 int 或 int4 数组发送到全局或纹理内存,例如这个

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

然后,Thread0 将获取 byte0 到 15,Thread1 获取 byte1 到字节 16,依此类推,以减少我正在执行的全局内存访问次数,因为目前,我每个线程最多对全局进行 16 次读取内存。

谢谢

最佳答案

如果要在单个事务中获取 16 个字节,数据必须是正确的 vector 类型(例如 int4float4 等),并且必须是自然对齐。这意味着 16 字节 vector 类型的 vector 类型区域的开头必须从 16 字节边界开始。如果您的第一个线程正确检索字节 0-15,则第二个线程无法正确检索字节 1-16(在单个事务中),因为这不会自然对齐。下一个自然对齐的 16 字节槽将是字节 16-31。 int 也必须对齐,因此您不能在字节 1 处启动 int,而是在字节 0、4、8 等处启动 int

This section编程指南,特别是“大小和对齐要求”也会对此进行解释。

关于c - 如何从全局内存或纹理内存中获取 16 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22172703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com