|
|
@@ -415,6 +415,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
|
|
|
unsigned number;
|
|
|
cl_device_type type;
|
|
|
char name[128];
|
|
|
+ char version[128];
|
|
|
};
|
|
|
|
|
|
enum { NPLAT = 16, NDEV = 16 };
|
|
|
@@ -455,6 +456,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
|
|
|
d->platform = p;
|
|
|
CL_CHECK(clGetDeviceInfo(d->id, CL_DEVICE_NAME, sizeof(d->name), &d->name, NULL));
|
|
|
CL_CHECK(clGetDeviceInfo(d->id, CL_DEVICE_TYPE, sizeof(d->type), &d->type, NULL));
|
|
|
+ CL_CHECK(clGetDeviceInfo(d->id, CL_DEVICE_VERSION, sizeof(d->version), &d->version, NULL));
|
|
|
|
|
|
if (p->default_device == NULL && d->type == CL_DEVICE_TYPE_GPU) {
|
|
|
p->default_device = d;
|
|
|
@@ -547,7 +549,7 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
|
|
|
}
|
|
|
|
|
|
GGML_LOG_INFO("ggml_opencl: selecting platform: '%s'\n", default_device->platform->name);
|
|
|
- GGML_LOG_INFO("ggml_opencl: selecting device: '%s'\n", default_device->name);
|
|
|
+ GGML_LOG_INFO("ggml_opencl: selecting device: '%s (%s)'\n", default_device->name, default_device->version);
|
|
|
if (default_device->type != CL_DEVICE_TYPE_GPU) {
|
|
|
GGML_LOG_WARN("ggml_opencl: warning, not a GPU: '%s'.\n", default_device->name);
|
|
|
}
|
|
|
@@ -556,9 +558,15 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) {
|
|
|
dev_ctx->device = default_device->id;
|
|
|
backend_ctx->device = default_device->id;
|
|
|
|
|
|
- if (strstr(default_device->name, "Adreno")) {
|
|
|
+ if (strstr(default_device->name, "Adreno") ||
|
|
|
+ strstr(default_device->name, "Qualcomm") ||
|
|
|
+ strstr(default_device->version, "Adreno")) {
|
|
|
backend_ctx->gpu_family = GPU_FAMILY::ADRENO;
|
|
|
- backend_ctx->adreno_gen = get_adreno_gpu_gen(default_device->name);
|
|
|
+ // Usually device version contains the detailed device name
|
|
|
+ backend_ctx->adreno_gen = get_adreno_gpu_gen(default_device->version);
|
|
|
+ if (backend_ctx->adreno_gen == ADRENO_GPU_GEN::ADRENO_UNKNOWN) {
|
|
|
+ backend_ctx->adreno_gen = get_adreno_gpu_gen(default_device->name);
|
|
|
+ }
|
|
|
|
|
|
// Use wave size of 64 for all Adreno GPUs.
|
|
|
backend_ctx->adreno_wave_size = 64;
|