2016-03-08 57 views
0

我试图通过论坛搜索,但没有找到任何东西。我想通过一个结构到我的OpenCL文件,但似乎无法理解declspec_align函数。基本上,我已经有两个结构,这是香港专业教育学院如何试图做到这一点:Declspec创建一个缓冲区发送到OpenCL内核时的结构

struct 2Floats { 
    float x, y; 
} 

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

但这似乎并不被路过的正确,我只是想知道,如果有人能告诉我有多少字节ID来传递?我认为这将是4浮动,但它似乎我错了。

+0

OpenCL中的哪个api是你想要调用的? – Atifm

回答

0

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

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

请注意,该数字不是数据的大小,而是您需要的对齐方式。在封面之下,我确信OpenCL正尝试使用一些需要内存对齐的SIMD操作。如果你可以提供你想要调用的函数的名字,我相信这些文档说明了必要的对齐方式。大多数SIMD操作需要在16位边界上对齐。

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

+1

非常感谢! :) –

相关问题