2016-03-08 37 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

非常感謝! :) –

相關問題