第三章 平臺、上下文和設備
1、opencl平臺
cl_intclGetPlatformIDs(cl_uint num_entries,cl_platform_id * platforms,cl_uint *num_platforms)
功能一:查詢可用平臺數,需要將platforms設爲NULL,將num_entries設爲0.
判斷出錯的兩個條件:函數返回值不等於CL_SUCCESS,或者,獲取到的平臺數小於等於0.
進行錯誤處理,輸出錯誤原因爲找不到平臺。
功能二:查詢可用平臺列表,需要將num_entries設置爲查詢到的平臺數,將num_platforms設爲NULL。
(注意:每次獲取到的OpenCL平臺及設備的ID列表中的各個ID號均不同。)
判斷出錯的條件:函數返回值不等於CL_SUCCESS.
進行錯誤處理,輸出錯誤原因爲找不到平臺。
相關代碼如下:
cl_intclGetPlatformInfo(cl_platform_id platform,cl_platform_info param_name,size_tparam_value_size,void * param_value,size_t * param_value_size_ret)
功能一:查詢返回信息字符串的大小,需要將param_value_size和param_value的值分別置爲0和NULL。
判斷出錯的條件:函數返回值不等於CL_SUCCESS.
進行錯誤處理,輸出錯誤原因爲找不到平臺的某個指定信息。
功能二:查詢指定信息,需要將param_value_size設置爲查詢到的信息字符串的大小,將param_value_size_ret設置爲NULL,param_value將返回查詢到的信息。
判斷出錯的條件:函數返回值不等於CL_SUCCESS.
進行錯誤處理,輸出錯誤原因爲找不到平臺的某個指定信息。
相關代碼如下:
本機所有平臺及其相關信息如下:
2、opencl設備
(各個平臺可能會分別關聯一組計算設備,應用程序將利用這些計算設備執行代碼;平臺與設備之間的區別在於,平臺對應計算機中安裝的SDK開發包,而設備對應計算機中的硬件CPU或者GPU,而對於含有一個CPU和一個GPU的異構計算機來說,安裝在計算機上的所有軟件平臺均關聯到了所有OpenCL硬件,當查詢電腦上的所有平臺以及對應的設備時,顯示如下所示:
兩個平臺均關聯了電腦上唯一的CPU和唯一的GPU設備。
經程序測試,opencl的默認設備爲GPU。
)
cl_intclGetDeviceIDs(cl_platform_id platform,cl_device_type device_type,cl_uintnum_entries,cl_device_id * devices,cl_uint * num_devices)
功能一:查詢設備數