| 121 | } |
| 122 | |
| 123 | void * ggml_backend_buffer_get_base(ggml_backend_buffer_t buffer) { |
| 124 | GGML_ASSERT(buffer); |
| 125 | // get_base is optional if the buffer is zero-sized |
| 126 | if (!ggml_backend_buffer_is_meta(buffer) && buffer->size == 0) { |
| 127 | return NULL; |
| 128 | } |
| 129 | |
| 130 | // FIXME JG: a multi_buffer has a non-zero size, according to the above comment get_base is not optional, |
| 131 | // I don't know whether the above comment is correct |
| 132 | if (!buffer->iface.get_base) { |
| 133 | return NULL; |
| 134 | } |
| 135 | |
| 136 | void * base = buffer->iface.get_base(buffer); |
| 137 | |
| 138 | GGML_ASSERT(base != NULL && "backend buffer base cannot be NULL"); |
| 139 | |
| 140 | return base; |
| 141 | } |
| 142 | |
| 143 | enum ggml_status ggml_backend_buffer_init_tensor(ggml_backend_buffer_t buffer, struct ggml_tensor * tensor) { |
| 144 | GGML_ASSERT(buffer); |
no test coverage detected