在OpenCL中有很多呼叫這樣創建對象openCL函數返回的對象究竟是什麼?
clCreateProgramWithSource創建程序對象的上下文,並 加載由文本字符串字符串 陣列到程序對象中指定的源代碼。
我的問題是這個對象究竟是什麼,作爲計算機科學的對象有many definitions?
我想了解更低級別的源代碼字符串究竟發生了什麼,程序對象究竟是什麼,它包含了什麼?
在OpenCL中有很多呼叫這樣創建對象openCL函數返回的對象究竟是什麼?
clCreateProgramWithSource創建程序對象的上下文,並 加載由文本字符串字符串 陣列到程序對象中指定的源代碼。
我的問題是這個對象究竟是什麼,作爲計算機科學的對象有many definitions?
我想了解更低級別的源代碼字符串究竟發生了什麼,程序對象究竟是什麼,它包含了什麼?
在這種情況下,對象意味着一個cl_program
結構的實例。然而,從OpenCL的頭cl.h
:
typedef struct _cl_program * cl_program;
cl_program只是一個指向_cl_program
結構。爲什麼? OpenCL是一個開放的標準,所有的實現都需要特定的庫開發人員來實現特定硬件的標準(例如Intel CPU)。
它是實現定義的,並且沒有聲明爲您檢查它們的結構。
在給定的實現中,這些句柄可能是指向內部定義結構的指針,或者它們可能是索引到這些項目的集合中。你不知道,如果你知道它,它可能會改變驅動程序更新。這就是爲什麼它們是不透明類型的原因,所以實現可以做任何它喜歡的內容,只是返回一個句柄給你的代碼。
是否有可能看到結構的內容?或者它是二進制形式的? – gpuguy
它們駐留在編譯庫內的二進制形式。如果您尋求一般指導,請查看開源實現。 –