1313#include " ggml-openvino/utils.h"
1414#include " ggml.h"
1515
16- #define GGML_OPENVINO_MAX_STREAMS 8
17-
1816struct ggml_backend_openvino_context {
1917 int device; // the device ID currently in use
2018 std::string name; // context Name
@@ -116,43 +114,6 @@ GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_buffer_type(in
116114 GGML_UNUSED (device);
117115}
118116
119- // split tensor buffer that splits matrices by rows across multiple devices
120- GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_split_buffer_type (const float * tensor_split) {
121- GGML_ASSERT (tensor_split != nullptr );
122- return nullptr ;
123- }
124-
125- // pinned host buffer for use with the CPU backend for faster copies between CPU
126- // and GPU
127- GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_host_buffer_type (void ) {
128- return nullptr ;
129- }
130-
131- struct ggml_backend_openvino_buffer_type_context {
132- int device;
133- std::string name;
134- };
135-
136- static const char * ggml_backend_openvino_buffer_type_get_name (ggml_backend_buffer_type_t buft) {
137- ggml_backend_openvino_buffer_type_context * ctx = (ggml_backend_openvino_buffer_type_context *)buft->context ;
138-
139- return ctx->name .c_str ();
140- }
141- static bool ggml_backend_buft_is_openvino (ggml_backend_buffer_type_t buft) {
142- return buft->iface .get_name == ggml_backend_openvino_buffer_type_get_name;
143- }
144-
145-
146- static const char * ggml_backend_openvino_split_buffer_type_get_name (ggml_backend_buffer_type_t buft) {
147- return GGML_OPENVINO_NAME " _Split" ;
148-
149- GGML_UNUSED (buft);
150- }
151-
152- static bool ggml_backend_buft_is_openvino_split (ggml_backend_buffer_type_t buft) {
153- return buft->iface .get_name == ggml_backend_openvino_split_buffer_type_get_name;
154- }
155-
156117struct ggml_backend_openvino_device_context {
157118 int device;
158119 std::string name;
@@ -169,14 +130,10 @@ static const char * ggml_backend_openvino_device_get_description(ggml_backend_de
169130 return ctx->description .c_str ();
170131}
171132
172- // TODO
173133static void ggml_backend_openvino_device_get_memory (ggml_backend_dev_t dev, size_t * free, size_t * total) {
174134 GGML_ASSERT (dev->context != nullptr );
175135 GGML_ASSERT (free != nullptr );
176136 GGML_ASSERT (total != nullptr );
177- ggml_backend_openvino_device_context * ctx = (ggml_backend_openvino_device_context *)dev->context ;
178- GGML_ASSERT (ctx->device >= 0 );
179- // ggml_openvino_set_device(ctx->device);
180137 *total = 1 ;
181138 *free = 1 ;
182139}
@@ -192,18 +149,11 @@ static void ggml_backend_openvino_device_get_props(ggml_backend_dev_t dev, ggml_
192149 props->type = ggml_backend_openvino_device_get_type (dev);
193150 ggml_backend_openvino_device_get_memory (dev, &props->memory_free , &props->memory_total );
194151
195- bool host_buffer = getenv (" GGML_OPENVINO_NO_PINNED" ) == nullptr ;
196- #ifdef GGML_OPENVINO_NO_PEER_COPY
197- bool events = false ;
198- #else
199- bool events = true ;
200- #endif
201-
202152 props->caps = {
203- /* .async = */ true ,
204- /* .host_buffer = */ host_buffer ,
153+ /* .async = */ false ,
154+ /* .host_buffer = */ false ,
205155 /* .buffer_from_host_ptr = */ false ,
206- /* .events = */ events ,
156+ /* .events = */ false ,
207157 };
208158}
209159
@@ -218,27 +168,6 @@ static ggml_backend_buffer_type_t ggml_backend_openvino_device_get_buffer_type(g
218168 return ggml_backend_openvino_buffer_type (ctx->device );
219169}
220170
221- static ggml_backend_buffer_type_t ggml_backend_openvino_device_get_host_buffer_type (ggml_backend_dev_t dev) {
222- GGML_UNUSED (dev);
223- return ggml_backend_openvino_host_buffer_type ();
224- }
225-
226- static ggml_backend_buffer_t ggml_backend_openvino_device_buffer_from_ptr (ggml_backend_dev_t dev, void * ptr, size_t size, size_t max_tensor_size) {
227- GGML_UNUSED (dev);
228- GGML_UNUSED (ptr);
229- GGML_UNUSED (size);
230- GGML_UNUSED (max_tensor_size);
231- return nullptr ;
232- }
233-
234- static ggml_backend_buffer_t ggml_backend_openvino_device_buffer_from_host_ptr (ggml_backend_dev_t dev, void * ptr, size_t size, size_t max_tensor_size) {
235- GGML_UNUSED (dev);
236- GGML_UNUSED (ptr);
237- GGML_UNUSED (size);
238- GGML_UNUSED (max_tensor_size);
239- return nullptr ;
240- }
241-
242171static bool is_op_unsupported_case (const ggml_tensor* op) {
243172 switch (op->op ) {
244173 case GGML_OP_SOFT_MAX: {
@@ -460,7 +389,7 @@ static const struct ggml_backend_device_i ggml_backend_openvino_device_interface
460389 /* .init_backend = */ ggml_backend_openvino_device_init,
461390 /* .get_buffer_type = */ ggml_backend_openvino_device_get_buffer_type,
462391 /* .get_host_buffer_type = */ NULL ,
463- /* .buffer_from_host_ptr = */ ggml_backend_openvino_device_buffer_from_ptr ,
392+ /* .buffer_from_host_ptr = */ NULL ,
464393 /* .supports_op = */ ggml_backend_openvino_device_supports_op,
465394 /* .supports_buft = */ ggml_backend_openvino_device_supports_buft,
466395 /* .offload_op = */ NULL ,
@@ -479,44 +408,19 @@ static const char * ggml_backend_openvino_reg_get_name(ggml_backend_reg_t reg) {
479408}
480409
481410static size_t ggml_backend_openvino_reg_get_device_count (ggml_backend_reg_t reg) {
482- return ggml_openvino_info ().device_count ;
483411 GGML_UNUSED (reg);
484-
485- // TODO
486- ggml_backend_openvino_reg_context * ctx = (ggml_backend_openvino_reg_context *)reg->context ;
487-
488- return ctx->devices .size ();
412+ return ggml_openvino_info ().device_count ;
489413}
490414
491415static ggml_backend_dev_t ggml_backend_openvino_reg_get_device (ggml_backend_reg_t reg, size_t index) {
492416 ggml_backend_openvino_reg_context * ctx = (ggml_backend_openvino_reg_context *)reg->context ;
493417 GGML_ASSERT (index < ctx->devices .size ());
494418 return ctx->devices [index];
495- // GGML_ASSERT(index == 0);
496-
497- // static ggml_backend_device ggml_backend_openvino_device = {
498- // /* .iface = */ ggml_backend_openvino_device_interface,
499- // /* .reg = */ reg,
500- // /* .context = */ nullptr,
501- // };
502-
503- // return &ggml_backend_openvino_device;
504-
505- // GGML_UNUSED(reg);
506- // GGML_UNUSED(index);
507419}
508420
509421static void * ggml_backend_openvino_get_proc_address (ggml_backend_reg_t reg, const char * name) {
510422 GGML_UNUSED (reg);
511- if (strcmp (name, " ggml_backend_split_buffer_type" ) == 0 ) {
512- return (void *)ggml_backend_openvino_split_buffer_type;
513- }
514- // if (strcmp(name, "ggml_backend_register_host_buffer") == 0) {
515- // return (void *)ggml_backend_openvino_register_host_buffer;
516- // }
517- // if (strcmp(name, "ggml_backend_unregister_host_buffer") == 0) {
518- // return (void *)ggml_backend_openvino_unregister_host_buffer;
519- // }
423+ GGML_UNUSED (name);
520424 return nullptr ;
521425}
522426
@@ -528,15 +432,11 @@ static const struct ggml_backend_reg_i ggml_backend_openvino_reg_interface = {
528432};
529433
530434static int get_openvino_device_count () {
531- ov::Core core;
532- auto devices = core.get_available_devices ();
533- // return devices.size();
534435 return 1 ;
535436}
536437
537438static ggml_openvino_device_info ggml_openvino_init () {
538439 ggml_openvino_device_info info = {};
539- // TODO
540440 info.device_count = get_openvino_device_count ();
541441 return info;
542442}
@@ -556,13 +456,11 @@ GGML_BACKEND_API ggml_backend_reg_t ggml_backend_openvino_reg(void) {
556456 if (!initialized) {
557457 ggml_backend_openvino_reg_context * ctx = new ggml_backend_openvino_reg_context;
558458
559- // GGML_LOG_DEBUG("ggml_openvino_info().device_count = %d \n", ggml_openvino_info().device_count);
560459 for (int i = 0 ; i < ggml_openvino_info ().device_count ; i++) {
561460 ggml_backend_openvino_device_context * dev_ctx = new ggml_backend_openvino_device_context;
562461 dev_ctx->device = i;
563462 dev_ctx->name = GGML_OPENVINO_NAME + std::to_string (i);
564463
565- // ggml_openvino_set_device(i);
566464 dev_ctx->description = ov::get_openvino_version ().description ;
567465
568466 ggml_backend_dev_t dev = new ggml_backend_device {
0 commit comments