Ouadie EL FAROUKI commited on
Commit
f35cae5
·
1 Parent(s): db52137

Add SYCL Backend registry, device and Event Interfaces (llama/9705)

Browse files

* implemented missing SYCL event APIs

* sycl : Added device and backend reg interfaces

* Restructured ggml-sycl.cpp

ggml/include/ggml-sycl.h CHANGED
@@ -19,6 +19,8 @@ extern "C" {
19
  // backend API
20
  GGML_API ggml_backend_t ggml_backend_sycl_init(int device);
21
 
 
 
22
  // devide buffer
23
  GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device);
24
 
@@ -29,14 +31,19 @@ GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_split_buffer_type(const fl
29
  GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_host_buffer_type(void);
30
 
31
  GGML_API void ggml_backend_sycl_print_sycl_devices(void);
32
- GGML_API void ggml_sycl_get_gpu_list(int *id_list, int max_len);
33
- GGML_API void ggml_sycl_get_device_description(int device, char *description, size_t description_size);
 
 
34
  GGML_API int ggml_backend_sycl_get_device_count();
35
  GGML_API void ggml_backend_sycl_get_device_memory(int device, size_t *free, size_t *total);
36
 
37
  // SYCL doesn't support registering host memory, keep here for reference
38
  // GGML_API bool ggml_backend_sycl_register_host_buffer(void * buffer, size_t size);
39
  // GGML_API void ggml_backend_sycl_unregister_host_buffer(void * buffer);
 
 
 
40
  #ifdef __cplusplus
41
  }
42
  #endif
 
19
  // backend API
20
  GGML_API ggml_backend_t ggml_backend_sycl_init(int device);
21
 
22
+ GGML_API bool ggml_backend_is_sycl(ggml_backend_t backend);
23
+
24
  // devide buffer
25
  GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device);
26
 
 
31
  GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_host_buffer_type(void);
32
 
33
  GGML_API void ggml_backend_sycl_print_sycl_devices(void);
34
+ GGML_API void ggml_backend_sycl_get_gpu_list(int *id_list, int max_len);
35
+ GGML_API void ggml_backend_sycl_get_device_description(int device,
36
+ char *description,
37
+ size_t description_size);
38
  GGML_API int ggml_backend_sycl_get_device_count();
39
  GGML_API void ggml_backend_sycl_get_device_memory(int device, size_t *free, size_t *total);
40
 
41
  // SYCL doesn't support registering host memory, keep here for reference
42
  // GGML_API bool ggml_backend_sycl_register_host_buffer(void * buffer, size_t size);
43
  // GGML_API void ggml_backend_sycl_unregister_host_buffer(void * buffer);
44
+
45
+ GGML_API ggml_backend_reg_t ggml_backend_sycl_reg(void);
46
+
47
  #ifdef __cplusplus
48
  }
49
  #endif
ggml/src/ggml-backend.cpp CHANGED
@@ -537,6 +537,10 @@ void * ggml_backend_reg_get_proc_address(ggml_backend_reg_t reg, const char * na
537
  #include "ggml-metal.h"
538
  #endif
539
 
 
 
 
 
540
  #ifdef GGML_USE_VULKAN
541
  #include "ggml-vulkan.h"
542
  #endif
@@ -568,6 +572,9 @@ struct ggml_backend_registry {
568
  #ifdef GGML_USE_METAL
569
  register_backend(ggml_backend_metal_reg());
570
  #endif
 
 
 
571
  #ifdef GGML_USE_VULKAN
572
  register_backend(ggml_backend_vk_reg());
573
  #endif
@@ -581,7 +588,7 @@ struct ggml_backend_registry {
581
  register_backend(ggml_backend_amx_reg());
582
  #endif
583
 
584
- // TODO: sycl, kompute, cann
585
 
586
  register_backend(ggml_backend_cpu_reg());
587
  }
@@ -2254,6 +2261,7 @@ ggml_backend_sched_t ggml_backend_sched_new(
2254
  sched->backends[b] = backends[b];
2255
  sched->bufts[b] = bufts ? bufts[b] : ggml_backend_get_default_buffer_type(backends[b]);
2256
  GGML_ASSERT(ggml_backend_supports_buft(backends[b], sched->bufts[b]));
 
2257
  if (sched->n_copies > 1) {
2258
  for (int c = 0; c < sched->n_copies; c++) {
2259
  sched->events[b][c] = ggml_backend_event_new(backends[b]->device);
 
537
  #include "ggml-metal.h"
538
  #endif
539
 
540
+ #ifdef GGML_USE_SYCL
541
+ #include "ggml-sycl.h"
542
+ #endif
543
+
544
  #ifdef GGML_USE_VULKAN
545
  #include "ggml-vulkan.h"
546
  #endif
 
572
  #ifdef GGML_USE_METAL
573
  register_backend(ggml_backend_metal_reg());
574
  #endif
575
+ #ifdef GGML_USE_SYCL
576
+ register_backend(ggml_backend_sycl_reg());
577
+ #endif
578
  #ifdef GGML_USE_VULKAN
579
  register_backend(ggml_backend_vk_reg());
580
  #endif
 
588
  register_backend(ggml_backend_amx_reg());
589
  #endif
590
 
591
+ // TODO: kompute, cann
592
 
593
  register_backend(ggml_backend_cpu_reg());
594
  }
 
2261
  sched->backends[b] = backends[b];
2262
  sched->bufts[b] = bufts ? bufts[b] : ggml_backend_get_default_buffer_type(backends[b]);
2263
  GGML_ASSERT(ggml_backend_supports_buft(backends[b], sched->bufts[b]));
2264
+
2265
  if (sched->n_copies > 1) {
2266
  for (int c = 0; c < sched->n_copies; c++) {
2267
  sched->events[b][c] = ggml_backend_event_new(backends[b]->device);
ggml/src/ggml-sycl.cpp CHANGED
The diff for this file is too large to render. See raw diff