@@ -415,6 +415,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
415
415
unsigned number;
416
416
cl_device_type type;
417
417
char name[128 ];
418
+ char version[128 ];
418
419
};
419
420
420
421
enum { NPLAT = 16 , NDEV = 16 };
@@ -455,6 +456,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
455
456
d->platform = p;
456
457
CL_CHECK (clGetDeviceInfo (d->id , CL_DEVICE_NAME, sizeof (d->name ), &d->name , NULL ));
457
458
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 ));
458
460
459
461
if (p->default_device == NULL && d->type == CL_DEVICE_TYPE_GPU) {
460
462
p->default_device = d;
@@ -547,7 +549,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
547
549
}
548
550
549
551
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 );
551
553
if (default_device->type != CL_DEVICE_TYPE_GPU) {
552
554
GGML_LOG_WARN (" ggml_opencl: warning, not a GPU: '%s'.\n " , default_device->name );
553
555
}
@@ -556,9 +558,15 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
556
558
dev_ctx->device = default_device->id ;
557
559
backend_ctx->device = default_device->id ;
558
560
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" )) {
560
564
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
+ }
562
570
563
571
// Use wave size of 64 for all Adreno GPUs.
564
572
backend_ctx->adreno_wave_size = 64 ;
0 commit comments