Restore default platform + device selection by id behavior

This commit is contained in:
0cc4m 2023-05-22 21:51:39 +02:00
parent e1ee2810ea
commit 4dfd4fe1eb

View file

@ -385,8 +385,8 @@ void ggml_cl_init(void) {
char * user_platform_string = getenv("GGML_OPENCL_PLATFORM"); char * user_platform_string = getenv("GGML_OPENCL_PLATFORM");
char * user_device_string = getenv("GGML_OPENCL_DEVICE"); char * user_device_string = getenv("GGML_OPENCL_DEVICE");
int user_platform_number = -1; unsigned int user_platform_number = -1;
int user_device_number = -1; unsigned int user_device_number = -1;
unsigned n; unsigned n;
if (user_platform_string != NULL && sscanf(user_platform_string, " %u", &n) == 1 && n < n_platforms) { if (user_platform_string != NULL && sscanf(user_platform_string, " %u", &n) == 1 && n < n_platforms) {
@ -395,6 +395,14 @@ void ggml_cl_init(void) {
if (user_device_string != NULL && sscanf(user_device_string, " %u", &n) == 1 && n < n_devices) { if (user_device_string != NULL && sscanf(user_device_string, " %u", &n) == 1 && n < n_devices) {
user_device_number = (int)n; user_device_number = (int)n;
} }
if (user_platform_number != -1 && user_device_number != -1) {
cl_platform* platform = &platforms[user_platform_number];
if (user_device_number >= platform->n_devices) {
fprintf(stderr, "ggml_opencl: invalid device number %d\n", user_device_number);
exit(1);
}
default_device = &platform->devices[user_device_number];
} else {
struct cl_device * selected_devices = devices; struct cl_device * selected_devices = devices;
unsigned n_selected_devices = n_devices; unsigned n_selected_devices = n_devices;
@ -448,6 +456,7 @@ void ggml_cl_init(void) {
if (default_device == NULL) { if (default_device == NULL) {
default_device = &selected_devices[0]; default_device = &selected_devices[0];
} }
}
fprintf(stderr, "ggml_opencl: selecting platform: '%s'\n", default_device->platform->name); fprintf(stderr, "ggml_opencl: selecting platform: '%s'\n", default_device->platform->name);
fprintf(stderr, "ggml_opencl: selecting device: '%s'\n", default_device->name); fprintf(stderr, "ggml_opencl: selecting device: '%s'\n", default_device->name);