@@ -415,6 +415,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
415415 unsigned number;
416416 cl_device_type type;
417417 char name[128 ];
418+ char version[128 ];
418419 };
419420
420421 enum { NPLAT = 16 , NDEV = 16 };
@@ -455,6 +456,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
455456 d->platform = p;
456457 CL_CHECK (clGetDeviceInfo (d->id , CL_DEVICE_NAME, sizeof (d->name ), &d->name , NULL ));
457458 CL_CHECK (clGetDeviceInfo (d->id , CL_DEVICE_TYPE, sizeof (d->type ), &d->type , NULL ));
459+ CL_CHECK (clGetDeviceInfo (d->id , CL_DEVICE_VERSION, sizeof (d->version ), &d->version , NULL ));
458460
459461 if (p->default_device == NULL && d->type == CL_DEVICE_TYPE_GPU) {
460462 p->default_device = d;
@@ -547,7 +549,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
547549 }
548550
549551 GGML_LOG_INFO (" ggml_opencl: selecting platform: '%s'\n " , default_device->platform ->name );
550- GGML_LOG_INFO (" ggml_opencl: selecting device: '%s'\n " , default_device->name );
552+ GGML_LOG_INFO (" ggml_opencl: selecting device: '%s (%s) '\n " , default_device->name , default_device-> version );
551553 if (default_device->type != CL_DEVICE_TYPE_GPU) {
552554 GGML_LOG_WARN (" ggml_opencl: warning, not a GPU: '%s'.\n " , default_device->name );
553555 }
@@ -556,9 +558,15 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
556558 dev_ctx->device = default_device->id ;
557559 backend_ctx->device = default_device->id ;
558560
559- if (strstr (default_device->name , " Adreno" )) {
561+ if (strstr (default_device->name , " Adreno" ) ||
562+ strstr (default_device->name , " Qualcomm" ) ||
563+ strstr (default_device->version , " Adreno" )) {
560564 backend_ctx->gpu_family = GPU_FAMILY::ADRENO;
561- backend_ctx->adreno_gen = get_adreno_gpu_gen (default_device->name );
565+ // Usually device version contains the detailed device name
566+ backend_ctx->adreno_gen = get_adreno_gpu_gen (default_device->version );
567+ if (backend_ctx->adreno_gen == ADRENO_GPU_GEN::ADRENO_UNKNOWN) {
568+ backend_ctx->adreno_gen = get_adreno_gpu_gen (default_device->name );
569+ }
562570
563571 // Use wave size of 64 for all Adreno GPUs.
564572 backend_ctx->adreno_wave_size = 64 ;
0 commit comments