bool CLDevice::init () { cl_platform_id platform_id = NULL; cl_device_id device_id = NULL; cl_uint num_platform = 0; cl_uint num_device = 0; CLDevieInfo device_info; if (clGetPlatformIDs (1, &platform_id, &num_platform) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl platform ID failed"); return false; } XCAM_ASSERT (num_platform >= 1); if (clGetDeviceIDs (platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &num_device) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl device ID failed"); return false; } XCAM_ASSERT (num_device >= 1); // only query first device info if (!query_device_info (device_id, device_info)) { //continue XCAM_LOG_WARNING ("cl get device info failed but continue"); } else { XCAM_LOG_DEBUG ( "cl get device info,\n" "\tmax_compute_unit:%d" "\tmax_work_item_dims:%d" "\tmax_work_item_sizes:{%d, %d, %d}" "\tmax_work_group_size:%d", device_info.max_compute_unit, device_info.max_work_item_dims, device_info.max_work_item_sizes[0], device_info.max_work_item_sizes[1], device_info.max_work_item_sizes[2], device_info.max_work_group_size); } _platform_id = platform_id; _device_id = device_id; _device_info = device_info; _inited = true; return true; }
bool CLDevice::init () { cl_platform_id platform_id = NULL; cl_device_id device_id = NULL; cl_uint num_platform = 0; cl_uint num_device = 0; CLDevieInfo device_info; if (clGetPlatformIDs (1, &platform_id, &num_platform) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl platform ID failed"); return false; } XCAM_ASSERT (num_platform >= 1); if (clGetDeviceIDs (platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &num_device) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl device ID failed"); return false; } XCAM_ASSERT (num_device >= 1); // only query first device info if (!query_device_info (device_id, device_info)) { //continue XCAM_LOG_WARNING ("cl get device info failed but continue"); } else { XCAM_LOG_INFO ( "cl get device info,\n" "\tmax_compute_unit:%" PRIu32 "\tmax_work_item_dims:%" PRIu32 "\tmax_work_item_sizes:{%" PRIuS ", %" PRIuS ", %" PRIuS "}" "\tmax_work_group_size:%" PRIuS "\timage_pitch_alignment:%" PRIu32, device_info.max_compute_unit, device_info.max_work_item_dims, device_info.max_work_item_sizes[0], device_info.max_work_item_sizes[1], device_info.max_work_item_sizes[2], device_info.max_work_group_size, device_info.image_pitch_alignment); } // get platform name string length size_t sz = 0; if (clGetPlatformInfo(platform_id, CL_PLATFORM_NAME, 0, 0, &sz) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl platform name failed"); return false; } // get platform name string if (sz >= XCAM_CL_MAX_STR_SIZE) { sz = XCAM_CL_MAX_STR_SIZE - 1; } if (clGetPlatformInfo(platform_id, CL_PLATFORM_NAME, sz, _platform_name, 0) != CL_SUCCESS) { XCAM_LOG_WARNING ("get cl platform name failed"); return false; } _platform_id = platform_id; _device_id = device_id; _device_info = device_info; _platform_name[sz] = 0; _inited = true; return true; }