Spaces:
Running
Running
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 +9 -2
- ggml/src/ggml-backend.cpp +9 -1
- ggml/src/ggml-sycl.cpp +0 -0
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
|
| 33 |
-
GGML_API void
|
|
|
|
|
|
|
| 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:
|
| 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
|
|
|