gpt4 book ai didi

opencl - 我需要帮助理解 OpenCL 缓冲区中的数据对齐

转载 作者:行者123 更新时间:2023-12-02 09:51:57 29 4
gpt4 key购买 nike

给出以下结构

typedef struct
{
float3 position;
float8 position1;
} MyStruct;

我正在创建一个缓冲区,将其作为指向内核的指针传递,该缓冲区将具有以前的缓冲区格式。

我知道在写入三个 float 后我必须在缓冲区中添加 4 个字节以获得下一个 2 的幂(16 个字节),但我不明白为什么我必须在写入之前再添加 16 个字节位置 1 的字节。否则我会在位置 1 中得到错误的值。

有人可以解释一下为什么吗?

最佳答案

float8 是 8 个 float 的向量,每个 float 为 4 个字节。这使得大小为 32 字节。根据 OpenCL 1.2 specification 第 6.1.5 节、类型对齐,类型始终与其大小对齐;所以float8必须是32字节对齐的。同一部分还告诉我们 float3 需要 4 个字。此外,由于结构体的 sizeof 被安排为允许结构体数组,因此它不会因重新排序这些特定字段而缩小。在更复杂的结构上,您可以通过将较小的字段放在一起来节省空间。

关于opencl - 我需要帮助理解 OpenCL 缓冲区中的数据对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994219/

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