2727
2828// ggml-backend interface
2929
30- static std::vector<ggml_backend_buffer_type_t >& ggml_backend_cpu_get_extra_bufts () {
30+ static std::vector<ggml_backend_buffer_type_t >& ggml_backend_cpu_get_extra_buffers_type () {
3131 static std::vector<ggml_backend_buffer_type_t > bufts = []() {
3232 std::vector<ggml_backend_buffer_type_t > bufts;
3333
@@ -47,14 +47,14 @@ static std::vector<ggml_backend_buffer_type_t>& ggml_backend_cpu_get_extra_bufts
4747 return bufts;
4848}
4949
50- static ggml_backend_buffer_type_t * ggml_backend_cpu_get_extra_bufts (ggml_backend_dev_t device) {
51- return ggml_backend_cpu_get_extra_bufts ().data ();
50+ static ggml_backend_buffer_type_t * ggml_backend_cpu_device_get_extra_buffers_type (ggml_backend_dev_t device) {
51+ return ggml_backend_cpu_get_extra_buffers_type ().data ();
5252
5353 GGML_UNUSED (device);
5454}
5555
56- static bool ggml_backend_cpu_is_extra_buft (ggml_backend_buffer_type_t buft) {
57- for (auto extra : ggml_backend_cpu_get_extra_bufts ()) {
56+ static bool ggml_backend_cpu_is_extra_buffer_type (ggml_backend_buffer_type_t buft) {
57+ for (auto extra : ggml_backend_cpu_get_extra_buffers_type ()) {
5858 if (extra && extra == buft) return true ;
5959 }
6060 return false ;
@@ -364,20 +364,16 @@ static bool ggml_backend_cpu_device_supports_op(ggml_backend_dev_t dev, const st
364364 const struct ggml_tensor * src0 = op->src [0 ];
365365 const struct ggml_tensor * src1 = op->src [1 ];
366366
367- // TODO voir comment reformater ca... type_traits && !type_traits->op_supported() => return false?
368- #ifdef GGML_USE_CPU_AARCH64
369- if (src0 && src0->buffer && ggml_backend_cpu_buft_is_aarch64 (src0->buffer ->buft )) {
370- if (op->op != GGML_OP_MUL_MAT || ggml_aarch64_get_optimal_repack_type (src0) == nullptr ) {
371- return false ;
372- }
373- }
374-
375- for (int i = 1 ; i < GGML_MAX_SRC; i++) {
376- if (op->src [i] && op->src [i]->buffer && ggml_backend_cpu_buft_is_aarch64 (op->src [i]->buffer ->buft )) {
367+ // extra_buffer_op?
368+ for (int i = 0 ; i < GGML_MAX_SRC; i++) {
369+ if (op->src [i] && op->src [i]->buffer && ggml_backend_cpu_is_extra_buffer_type (op->src [i]->buffer ->buft )) {
370+ auto buf = (ggml::cpu::extra_buffer_type*) op->src [i]->buffer ->buft ->context ;
371+ if (buf) {
372+ return buf->supports_op (dev, op);
373+ }
377374 return false ;
378375 }
379376 }
380- #endif
381377
382378 switch (op->op ) {
383379 case GGML_OP_CPY:
@@ -402,7 +398,7 @@ static bool ggml_backend_cpu_device_supports_op(ggml_backend_dev_t dev, const st
402398}
403399
404400static bool ggml_backend_cpu_device_supports_buft (ggml_backend_dev_t dev, ggml_backend_buffer_type_t buft) {
405- return ggml_backend_buft_is_host (buft) || ggml_backend_cpu_is_extra_buft (buft);
401+ return ggml_backend_buft_is_host (buft) || ggml_backend_cpu_is_extra_buffer_type (buft);
406402 GGML_UNUSED (dev);
407403}
408404
@@ -546,7 +542,10 @@ static void * ggml_backend_cpu_get_proc_address(ggml_backend_reg_t reg, const ch
546542 return (void *)fct;
547543 }
548544 if (strcmp (name, " ggml_backend_dev_get_extra_bufts" ) == 0 ) {
549- ggml_backend_dev_get_extra_bufts_t fct = ggml_backend_cpu_get_extra_bufts;
545+ // Pourquoi ne pas mettre ca avec
546+ // static const struct ggml_backend_device_i ggml_backend_cpu_device_i = {
547+ // /* .get_buffer_type = */ ggml_backend_cpu_device_get_buffer_type,
548+ ggml_backend_dev_get_extra_bufts_t fct = ggml_backend_cpu_device_get_extra_buffers_type;
550549 return (void *)fct;
551550 }
552551 if (strcmp (name, " ggml_backend_get_features" ) == 0 ) {
0 commit comments