我是OpenCL的新手,並且已經關注了this tutorial以開始使用。創建cl::Context
之前,教程將創建三個cl_context_properties
靜態數組,它並不能說明它是什麼,但將其作爲在cl::Context
構造的性能說法。OpenCL:cl :: Context構造函數中的屬性參數是什麼?
然而,當看着the reference page for cl::Context
,沒有解釋什麼屬性參數是,但它確實表示它「保留並且必須爲零」。那麼爲什麼教程發送一個非零值作爲該參數?它的用途是什麼?如果你之前能夠通過這個論點,它是如何突然被「保留」的,這不會使OpenCL不向後兼容嗎?
代碼編譯並運行良好,無論有沒有參數。唯一的區別是我得到一個警告,cprops
未使用時,NULL
而不是cprops
。
而且,當我通過CL_DEVICE_TYPE_CPU | CL_DEVICE_TYPE_GPU
作爲類型參數的構造函數cl::Context
,我的應用程序會崩潰(SIGSEGV)當我後來嘗試創建與上下文cl::Buffer
。爲什麼?我無法指定多個設備類型同時使用嗎?
更新:通過賦予NULL
的性能參數的構造函數cl::Context
,變量platformList
突然不能使用了相關的任何東西的OpenCL。本教程似乎用platformList
指定該cl::Context
要創建的平臺,但現在的上下文是這樣剛創建:
cl::Context context(
CL_DEVICE_TYPE_GPU,
NULL,
NULL,
NULL,
&err);
所以我沒有得到指定的平臺。我不應該這樣做嗎?它是如何發生的當我的教程似乎在做這件事時我不能這麼做?
謝謝。創建上下文時我沒有遇到任何錯誤,這就是爲什麼程序可以繼續並創建緩衝區,否則它會退出。這也是他們在教程中所做的。 – HelloGoodbye