char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
d6f303004
char/aliceai-t5-moe
1#include "ggml-remoting.h" 2 3#define BUFFER_TO_GPU (name ) ((ggml_backend_remoting_buffer_context *) (name)->context)->gpu 4 5static void * ggml_backend_remoting_buffer_get_base (ggml_backend_buffer_t buffer ) { 6ggml_backend_remoting_buffer_context * context = (ggml_backend_remoting_buffer_context * )buffer -> context ; 7if (context -> base ) { 8return context -> base ; 9 } 10 11context -> base = apir_buffer_get_base (BUFFER_TO_GPU (buffer ),BUFFER_TO_APIR_CONTEXT (buffer )); 12 13return context -> base ; 14} 15 16static void ggml_backend_remoting_buffer_set_tensor (ggml_backend_buffer_t buffer , 17ggml_tensor * tensor , 18const void * data , 19size_t offset , 20size_t size ) { 21virtgpu * gpu = BUFFER_TO_GPU (buffer ); 22 23ggml_backend_remoting_buffer_context * context = BUFFER_TO_GGML_CONTEXT (buffer ); 24if (context -> is_from_ptr ) { 25memcpy ((char * )tensor -> data + offset ,data ,size ); 26 }else { 27apir_buffer_set_tensor (gpu ,BUFFER_TO_APIR_CONTEXT (buffer ),tensor ,data ,offset ,size ); 28 } 29 30return ; 31} 32 33static void ggml_backend_remoting_buffer_get_tensor (ggml_backend_buffer_t buffer , 34const ggml_tensor * tensor , 35void * data , 36size_t offset , 37size_t size ) { 38virtgpu * gpu = BUFFER_TO_GPU (buffer ); 39ggml_backend_remoting_buffer_context * context = BUFFER_TO_GGML_CONTEXT (buffer ); 40if (context -> is_from_ptr ) { 41memcpy (data , (const char * )tensor -> data + offset ,size ); 42 }else { 43apir_buffer_get_tensor (gpu ,BUFFER_TO_APIR_CONTEXT (buffer ),tensor ,data ,offset ,size ); 44 } 45} 46 47static void ggml_backend_remoting_buffer_set_tensor_from_ptr (ggml_backend_buffer_t buffer , 48ggml_tensor * tensor , 49const void * data , 50size_t offset , 51size_t size ) { 52UNUSED (buffer ); 53 54memcpy ((char * )tensor -> data + offset ,data ,size ); 55 56return ; 57} 58 59static void ggml_backend_remoting_buffer_get_tensor_from_ptr (ggml_backend_buffer_t buffer , 60const ggml_tensor * tensor , 61void * data , 62size_t offset , 63size_t size ) { 64UNUSED (buffer ); 65 66memcpy (data , (const char * )tensor -> data + offset ,size ); 67} 68 69static bool ggml_backend_remoting_buffer_cpy_tensor (ggml_backend_buffer_t buffer , 70const ggml_tensor * src , 71ggml_tensor * dst ) { 72virtgpu * gpu = BUFFER_TO_GPU (buffer ); 73 74bool ret = apir_buffer_cpy_tensor (gpu ,BUFFER_TO_APIR_CONTEXT (buffer ),src ,dst ); 75 76return ret ; 77} 78 79static void ggml_backend_remoting_buffer_clear (ggml_backend_buffer_t buffer ,uint8_t value ) { 80virtgpu * gpu = BUFFER_TO_GPU (buffer ); 81 82apir_buffer_clear (gpu ,BUFFER_TO_APIR_CONTEXT (buffer ),value ); 83 84return ; 85} 86 87static void ggml_backend_remoting_buffer_free_buffer (ggml_backend_buffer_t buffer ) { 88virtgpu * gpu = BUFFER_TO_GPU (buffer ); 89 90apir_buffer_free_buffer (gpu ,BUFFER_TO_APIR_CONTEXT (buffer )); 91 92ggml_backend_remoting_buffer_context * context = BUFFER_TO_GGML_CONTEXT (buffer ); 93free (context ); 94buffer -> context = NULL ; 95} 96 97const ggml_backend_buffer_i ggml_backend_remoting_buffer_interface = { 98/* .free_buffer = */ ggml_backend_remoting_buffer_free_buffer , 99/* .get_base = */ ggml_backend_remoting_buffer_get_base , 100/* .init_tensor = */ NULL , 101/* .memset_tensor = */ NULL , 102/* .set_tensor = */ ggml_backend_remoting_buffer_set_tensor , 103/* .get_tensor = */ ggml_backend_remoting_buffer_get_tensor , 104/* .set_tensor_2d = */ NULL , 105/* .get_tensor_2d = */ NULL , 106/* .cpy_tensor = */ ggml_backend_remoting_buffer_cpy_tensor , 107/* .clear = */ ggml_backend_remoting_buffer_clear , 108/* .reset = */ NULL , 109}; 110 111const ggml_backend_buffer_i ggml_backend_remoting_buffer_from_ptr_interface = { 112/* .free_buffer = */ ggml_backend_remoting_buffer_free_buffer , 113/* .get_base = */ ggml_backend_remoting_buffer_get_base , 114/* .init_tensor = */ NULL , 115/* .memset_tensor = */ NULL , 116/* .set_tensor = */ ggml_backend_remoting_buffer_set_tensor_from_ptr , 117/* .get_tensor = */ ggml_backend_remoting_buffer_get_tensor_from_ptr , 118/* .set_tensor_2d = */ NULL , 119/* .get_tensor_2d = */ NULL , 120/* .cpy_tensor = */ ggml_backend_remoting_buffer_cpy_tensor , 121/* .clear = */ ggml_backend_remoting_buffer_clear , 122/* .reset = */ NULL , 123};