Skip to content

Commit ccb5cbc

Browse files
OuadiElfaroukiarthw
authored andcommitted
[SYCL] Add SYCL Backend registry, device and Event Interfaces (ggml-org#9705)
* implemented missing SYCL event APIs * sycl : Added device and backend reg interfaces * Restructured ggml-sycl.cpp
1 parent e9bdc88 commit ccb5cbc

File tree

5 files changed

+4219
-3967
lines changed

5 files changed

+4219
-3967
lines changed

examples/llama-bench/llama-bench.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ static std::string get_gpu_info() {
151151
int count = ggml_backend_sycl_get_device_count();
152152
for (int i = 0; i < count; i++) {
153153
char buf[128];
154-
ggml_sycl_get_device_description(i, buf, sizeof(buf));
154+
ggml_backend_sycl_get_device_description(i, buf, sizeof(buf));
155155
id += buf;
156156
if (i < count - 1) {
157157
id += "/";

ggml/include/ggml-sycl.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ extern "C" {
1919
// backend API
2020
GGML_API ggml_backend_t ggml_backend_sycl_init(int device);
2121

22+
GGML_API bool ggml_backend_is_sycl(ggml_backend_t backend);
23+
2224
// devide buffer
2325
GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device);
2426

@@ -29,8 +31,10 @@ GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_split_buffer_type(const fl
2931
GGML_API ggml_backend_buffer_type_t ggml_backend_sycl_host_buffer_type(void);
3032

3133
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 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);
3438
GGML_API int ggml_backend_sycl_get_device_count();
3539
GGML_API void ggml_backend_sycl_get_device_memory(int device, size_t *free, size_t *total);
3640

@@ -43,6 +47,9 @@ GGML_API void ggml_backend_sycl_set_single_device_mode(int main_gpu_id);
4347
// SYCL doesn't support registering host memory, keep here for reference
4448
// GGML_API bool ggml_backend_sycl_register_host_buffer(void * buffer, size_t size);
4549
// GGML_API void ggml_backend_sycl_unregister_host_buffer(void * buffer);
50+
51+
GGML_API ggml_backend_reg_t ggml_backend_sycl_reg(void);
52+
4653
#ifdef __cplusplus
4754
}
4855
#endif

ggml/src/ggml-backend.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,10 @@ void * ggml_backend_reg_get_proc_address(ggml_backend_reg_t reg, const char * na
537537
#include "ggml-metal.h"
538538
#endif
539539

540+
#ifdef GGML_USE_SYCL
541+
#include "ggml-sycl.h"
542+
#endif
543+
540544
#ifdef GGML_USE_VULKAN
541545
#include "ggml-vulkan.h"
542546
#endif
@@ -568,6 +572,9 @@ struct ggml_backend_registry {
568572
#ifdef GGML_USE_METAL
569573
register_backend(ggml_backend_metal_reg());
570574
#endif
575+
#ifdef GGML_USE_SYCL
576+
register_backend(ggml_backend_sycl_reg());
577+
#endif
571578
#ifdef GGML_USE_VULKAN
572579
register_backend(ggml_backend_vk_reg());
573580
#endif
@@ -581,7 +588,7 @@ struct ggml_backend_registry {
581588
register_backend(ggml_backend_amx_reg());
582589
#endif
583590

584-
// TODO: sycl, kompute, cann
591+
// TODO: kompute, cann
585592

586593
register_backend(ggml_backend_cpu_reg());
587594
}
@@ -2254,6 +2261,7 @@ ggml_backend_sched_t ggml_backend_sched_new(
22542261
sched->backends[b] = backends[b];
22552262
sched->bufts[b] = bufts ? bufts[b] : ggml_backend_get_default_buffer_type(backends[b]);
22562263
GGML_ASSERT(ggml_backend_supports_buft(backends[b], sched->bufts[b]));
2264+
22572265
if (sched->n_copies > 1) {
22582266
for (int c = 0; c < sched->n_copies; c++) {
22592267
sched->events[b][c] = ggml_backend_event_new(backends[b]->device);

0 commit comments

Comments
 (0)