39
39
do { \
40
40
cl_int err_ = (err); \
41
41
if (err_ != CL_SUCCESS) { \
42
- fprintf (stderr, " ggml_opencl: %s error %d at %s:%d\n " , \
42
+ GGML_LOG_ERROR ( " ggml_opencl: %s error %d at %s:%d\n " , \
43
43
#err, err_, __FILE__, __LINE__); \
44
44
GGML_ASSERT (0 ); \
45
45
} \
@@ -239,7 +239,7 @@ static cl_program build_program_from_source(cl_context ctx, cl_device_id dev, co
239
239
240
240
p = clCreateProgramWithSource (ctx, 1 , (const char **)&program_buffer, &program_size, &err);
241
241
if (err < 0 ) {
242
- fprintf (stderr, " OpenCL error creating program" );
242
+ GGML_LOG_ERROR ( " OpenCL error creating program" );
243
243
exit (1 );
244
244
}
245
245
@@ -249,7 +249,7 @@ static cl_program build_program_from_source(cl_context ctx, cl_device_id dev, co
249
249
program_log = (char *) malloc (log_size + 1 );
250
250
program_log[log_size] = ' \0 ' ;
251
251
clGetProgramBuildInfo (p, dev, CL_PROGRAM_BUILD_LOG, log_size + 1 , program_log, NULL );
252
- fprintf (stderr, " ggml_opencl: kernel compile error:\n\n %s\n " , program_log);
252
+ GGML_LOG_ERROR ( " ggml_opencl: kernel compile error:\n\n %s\n " , program_log);
253
253
free (program_log);
254
254
exit (1 );
255
255
}
@@ -277,7 +277,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
277
277
cl_int err;
278
278
279
279
#ifdef GGML_PROFILE_OPENCL
280
- fprintf (stderr, " ggml_opencl: OpenCL profiling enabled\n " );
280
+ GGML_LOG_INFO ( " ggml_opencl: OpenCL profiling enabled\n " );
281
281
#endif
282
282
283
283
struct cl_device ;
@@ -346,7 +346,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
346
346
}
347
347
348
348
if (n_devices == 0 ) {
349
- fprintf (stderr, " ggml_opencl: could find any OpenCL devices.\n " );
349
+ GGML_LOG_ERROR ( " ggml_opencl: could find any OpenCL devices.\n " );
350
350
exit (1 );
351
351
}
352
352
@@ -365,7 +365,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
365
365
if (user_platform_number != -1 && user_device_number != -1 ) {
366
366
cl_platform* platform = &platforms[user_platform_number];
367
367
if ((unsigned )user_device_number >= platform->n_devices ) {
368
- fprintf (stderr, " ggml_opencl: invalid device number %d\n " , user_device_number);
368
+ GGML_LOG_ERROR ( " ggml_opencl: invalid device number %d\n " , user_device_number);
369
369
exit (1 );
370
370
}
371
371
default_device = &platform->devices [user_device_number];
@@ -384,7 +384,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
384
384
}
385
385
}
386
386
if (user_platform_number == -1 ) {
387
- fprintf (stderr, " ggml_opencl: no platform matching '%s' was found.\n " , user_platform_string);
387
+ GGML_LOG_ERROR ( " ggml_opencl: no platform matching '%s' was found.\n " , user_platform_string);
388
388
exit (1 );
389
389
}
390
390
}
@@ -394,7 +394,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
394
394
n_selected_devices = p->n_devices ;
395
395
default_device = p->default_device ;
396
396
if (n_selected_devices == 0 ) {
397
- fprintf (stderr, " ggml_opencl: selected platform '%s' does not have any devices.\n " , p->name );
397
+ GGML_LOG_ERROR ( " ggml_opencl: selected platform '%s' does not have any devices.\n " , p->name );
398
398
exit (1 );
399
399
}
400
400
}
@@ -408,7 +408,7 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
408
408
}
409
409
}
410
410
if (user_device_number == -1 ) {
411
- fprintf (stderr, " ggml_opencl: no device matching '%s' was found.\n " , user_device_string);
411
+ GGML_LOG_ERROR ( " ggml_opencl: no device matching '%s' was found.\n " , user_device_string);
412
412
exit (1 );
413
413
}
414
414
}
@@ -425,10 +425,10 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
425
425
}
426
426
}
427
427
428
- fprintf (stderr, " ggml_opencl: selecting platform: '%s'\n " , default_device->platform ->name );
429
- fprintf (stderr, " ggml_opencl: selecting device: '%s'\n " , default_device->name );
428
+ GGML_LOG_INFO ( " ggml_opencl: selecting platform: '%s'\n " , default_device->platform ->name );
429
+ GGML_LOG_INFO ( " ggml_opencl: selecting device: '%s'\n " , default_device->name );
430
430
if (default_device->type != CL_DEVICE_TYPE_GPU) {
431
- fprintf (stderr, " ggml_opencl: warning, not a GPU: '%s'.\n " , default_device->name );
431
+ GGML_LOG_WARN ( " ggml_opencl: warning, not a GPU: '%s'.\n " , default_device->name );
432
432
}
433
433
434
434
dev_ctx->platform = default_device->platform ->id ;
@@ -447,16 +447,16 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
447
447
backend_ctx->adreno_wave_size = 128 ;
448
448
} else {
449
449
backend_ctx->adreno_wave_size = 128 ;
450
- fprintf (stderr, " ggml_opencl: Unsupported Adreno GPU: %s, "
450
+ GGML_LOG_WARN ( " ggml_opencl: Unsupported Adreno GPU: %s, "
451
451
" using wave size %d, "
452
452
" may not work as expected\n " ,
453
453
backend_ctx->device_name .c_str (), backend_ctx->adreno_wave_size );
454
454
}
455
455
} else if (strstr (default_device->name , " Intel" )) {
456
456
backend_ctx->gpu_family = GPU_FAMILY::INTEL;
457
457
} else {
458
- fprintf (stderr, " Unknown GPU: %s\n " , default_device->name );
459
- GGML_ASSERT ( false && " Unknown GPU " );
458
+ GGML_LOG_ERROR ( " Unknown GPU: %s\n " , default_device->name );
459
+ exit ( 1 );
460
460
}
461
461
462
462
// Populate backend device name
@@ -473,13 +473,13 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
473
473
char *driver_version = (char *)alloca (driver_version_str_size + 1 );
474
474
clGetDeviceInfo (device, CL_DRIVER_VERSION, driver_version_str_size, driver_version, NULL );
475
475
driver_version[driver_version_str_size] = ' \0 ' ;
476
- fprintf (stderr, " ggml_opencl: OpenCL driver: %s\n " , driver_version);
476
+ GGML_LOG_INFO ( " ggml_opencl: OpenCL driver: %s\n " , driver_version);
477
477
backend_ctx->driver_version = driver_version;
478
478
479
479
int adreno_cl_compiler_version = get_adreno_cl_compiler_version (driver_version);
480
480
bool has_vector_subgroup_broadcast =
481
481
adreno_cl_compiler_version >= 47 || adreno_cl_compiler_version == 17 ;
482
- fprintf (stderr, " ggml_opencl: vector subgroup broadcast support: %s\n " ,
482
+ GGML_LOG_INFO ( " ggml_opencl: vector subgroup broadcast support: %s\n " ,
483
483
has_vector_subgroup_broadcast ? " true" : " false" );
484
484
485
485
size_t ext_str_size;
@@ -489,33 +489,33 @@ static ggml_backend_opencl2_context * ggml_cl2_init(ggml_backend_dev_t dev) {
489
489
ext_buffer[ext_str_size] = ' \0 ' ; // ensure it is null terminated
490
490
// Check if ext_buffer contains cl_khr_fp16
491
491
backend_ctx->fp16_support = strstr (ext_buffer, " cl_khr_fp16" ) != NULL ;
492
- fprintf (stderr, " ggml_opencl: device FP16 support: %s\n " , backend_ctx->fp16_support ? " true" : " false" );
492
+ GGML_LOG_INFO ( " ggml_opencl: device FP16 support: %s\n " , backend_ctx->fp16_support ? " true" : " false" );
493
493
494
494
CL_CHECK (clGetDeviceInfo (device, CL_DEVICE_MEM_BASE_ADDR_ALIGN, sizeof (cl_uint), &backend_ctx->alignment , NULL ));
495
- fprintf (stderr, " ggml_opencl: mem base addr align: %u\n " , backend_ctx->alignment );
495
+ GGML_LOG_INFO ( " ggml_opencl: mem base addr align: %u\n " , backend_ctx->alignment );
496
496
497
497
clGetDeviceInfo (device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof (size_t ), &backend_ctx->max_alloc_size , NULL );
498
- fprintf (stderr, " ggml_opencl: max mem alloc size: %zu MB\n " , backend_ctx->max_alloc_size /1024 /1024 );
498
+ GGML_LOG_INFO ( " ggml_opencl: max mem alloc size: %zu MB\n " , backend_ctx->max_alloc_size /1024 /1024 );
499
499
500
500
// Check SVM.
501
501
cl_device_svm_capabilities svm_caps;
502
502
CL_CHECK (clGetDeviceInfo (device, CL_DEVICE_SVM_CAPABILITIES, sizeof (cl_device_svm_capabilities), &svm_caps, 0 ));
503
- fprintf (stderr, " ggml_opencl: SVM coarse grain buffer support: %s\n " ,
503
+ GGML_LOG_INFO ( " ggml_opencl: SVM coarse grain buffer support: %s\n " ,
504
504
svm_caps & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER ? " true" : " false" );
505
- fprintf (stderr, " ggml_opencl: SVM fine grain buffer support: %s\n " ,
505
+ GGML_LOG_INFO ( " ggml_opencl: SVM fine grain buffer support: %s\n " ,
506
506
svm_caps & CL_DEVICE_SVM_FINE_GRAIN_BUFFER ? " true" : " false" );
507
- fprintf (stderr, " ggml_opencl: SVM fine grain system support: %s\n " ,
507
+ GGML_LOG_INFO ( " ggml_opencl: SVM fine grain system support: %s\n " ,
508
508
svm_caps & CL_DEVICE_SVM_FINE_GRAIN_SYSTEM ? " true" : " false" );
509
- fprintf (stderr, " ggml_opencl: SVM atomics support: %s\n " ,
509
+ GGML_LOG_INFO ( " ggml_opencl: SVM atomics support: %s\n " ,
510
510
svm_caps & CL_DEVICE_SVM_ATOMICS ? " true" : " false" );
511
511
512
512
// Print out configurations
513
513
#ifdef GGML_OPENCL_SOA_Q
514
- fprintf (stderr, " ggml_opencl: flattening quantized weights representation as struct of arrays (GGML_OPENCL_SOA_Q)\n " );
514
+ GGML_LOG_INFO ( " ggml_opencl: flattening quantized weights representation as struct of arrays (GGML_OPENCL_SOA_Q)\n " );
515
515
#endif // GGML_OPENCL_SOA_Q
516
516
517
517
#ifdef GGML_OPENCL_USE_ADRENO_KERNELS
518
- fprintf (stderr, " ggml_opencl: using kernels optimized for Adreno (GGML_OPENCL_USE_ADRENO_KERNELS)\n " );
518
+ GGML_LOG_INFO ( " ggml_opencl: using kernels optimized for Adreno (GGML_OPENCL_USE_ADRENO_KERNELS)\n " );
519
519
#endif // GGML_OPENCL_USE_ADRENO_KERNELS
520
520
521
521
cl_context_properties properties[] = {
@@ -768,7 +768,7 @@ static void ggml_cl2_free(void) {
768
768
#ifdef GGML_OPENCL_PROFILING
769
769
FILE * fperf = fopen (" cl_profiling.csv" , " w" );
770
770
if (!fperf) {
771
- fprintf (stderr, " Failed to open cl_profiling.csv\n " );
771
+ GGML_LOG_ERROR ( " Failed to open cl_profiling.csv\n " );
772
772
return ;
773
773
}
774
774
@@ -784,7 +784,7 @@ static void ggml_cl2_free(void) {
784
784
}
785
785
fclose (fperf);
786
786
787
- fprintf (stderr, " ggml_opencl: total kernel time: %f\n " , total_kernel_time);
787
+ GGML_LOG_INFO ( " ggml_opencl: total kernel time: %f\n " , total_kernel_time);
788
788
#endif
789
789
}
790
790
@@ -911,7 +911,7 @@ static ggml_status ggml_backend_opencl2_graph_compute(ggml_backend_t backend, gg
911
911
912
912
bool ok = ggml_cl_compute_forward (backend, node);
913
913
if (!ok) {
914
- fprintf (stderr, " %s: error: op not supported %s (%s)\n " , __func__, node->name , ggml_op_name (node->op ));
914
+ GGML_LOG_ERROR ( " %s: error: op not supported %s (%s)\n " , __func__, node->name , ggml_op_name (node->op ));
915
915
}
916
916
GGML_ASSERT (ok);
917
917
}
@@ -1537,7 +1537,7 @@ static ggml_backend_buffer_t ggml_backend_opencl2_buffer_type_alloc_buffer(ggml_
1537
1537
cl_int err;
1538
1538
cl_mem mem = clCreateBuffer (backend_ctx->context , CL_MEM_READ_WRITE, size, NULL , &err);
1539
1539
if (err != CL_SUCCESS) {
1540
- fprintf (stderr, " %s: failed to allocate %.2f MiB\n " , __func__, size / 1024.0 / 1024.0 );
1540
+ GGML_LOG_INFO ( " %s: failed to allocate %.2f MiB\n " , __func__, size / 1024.0 / 1024.0 );
1541
1541
return nullptr ;
1542
1542
}
1543
1543
0 commit comments