我使用的結構如下。我們可以在opencl中使用結構體的結構嗎?
struct domain_data
{
int *no_h_domains,
*no_v_domains,
*domain_hsize,
*domain_vsize,
*domain_hstep,
*domain_vstep;
struct domain_pixels
{
int dom_x, dom_y;
double sum,sum2;
int sym;
} ***pixel;
} domain;
但是當我嘗試
domain.pixel =(結構domain_pixels ***)的malloc(I *的sizeof(結構domain_pixels **));
然後它給出以下錯誤。
錯誤C2440: '=':不能從轉換 'domain_pixels ' 到 'domain_data :: domain_pixels'
和
類型的值「domain_pixels *「不能被分配給類型爲」domain_data :: domain_pixels *「的實體」
但是,相同的代碼在win32應用程序中執行得非常好。
誰能告訴我,我是否可以在opencl中做到這一點?如果是,那麼如何?
我不完全確定這是如何編譯在一個正常的C/C++應用程序,所以我不會發布這個答案。它似乎在使用指向其他結構的指針,所以它在opencl或cuda中不起作用。指向全局內存的指針不允許作爲或在參數中傳遞。 – mfa
當你問你是否可以在OpenCL中做到這一點時,我不確定你的意思。 「malloc」在OpenCL C中無效,因此您必須詢問您的主機代碼,但主機代碼是常規的C/C++,並且您說這在win32應用程序中可以正常工作。我認爲這只是一個「C」問題,與OpenCL無關。 – Dithermaster
謝謝Dithermaster!即使這是一個c問題,當我使用openCL SDK的項目類型時,它會給出這個錯誤,並且在win32應用程序中正常工作。我也想把這些數據發送到設備上!那麼我可以將這些數據發送到設備上嗎? – MenkaMore