gpt4 book ai didi

c++ - Declspec A Struct,当创建缓冲区以发送到 OpenCL 内核时

转载 作者:行者123 更新时间:2023-11-30 17:04:17 24 4
gpt4 key购买 nike

我尝试通过论坛搜索此内容,但找不到任何内容。我想将一个结构传递到我的 OpenCL 文件,但似乎无法理解 declspec_align 函数。基本上,我有两个结构,这就是我尝试执行此操作的方式:

struct 2Floats {
float x, y;
}

_declspec(align(8)) struct pos {
_declspec(align(8)) 2Floats posi;
}

但这似乎没有正确传递,我只是想知道是否有人可以告诉我要传递多少字节?我以为 float 是 4,但看来我错了。

最佳答案

听起来您可能想要做的是将数据对齐 16 位字节边界。应该是这样的:

_declspec(align(16)) struct pos {
2Floats posi;
}

请注意,数字不是数据的大小,而是您需要的对齐方式。在幕后,我确信 OpenCL 正在尝试使用一些需要内存对齐的 SIMD 操作。如果您可以提供您尝试调用的函数的名称,我确信文档说明了有关必要的对齐的内容。大多数 SIMD 操作需要在 16 位边界上对齐。

同样,由于数字询问的是字节边界而不是数据的大小,因此 2float 有多大并不重要。但是,它们是两个 32 位 float ,因此 8 个字节。

关于c++ - Declspec A Struct,当创建缓冲区以发送到 OpenCL 内核时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877910/

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