local-llm-rn 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cpp/CMakeLists.txt +285 -0
- package/cpp/common/CMakeLists.txt +149 -0
- package/cpp/common/arg.cpp +3799 -0
- package/cpp/common/arg.h +131 -0
- package/cpp/common/base64.hpp +392 -0
- package/cpp/common/build-info.cpp.in +4 -0
- package/cpp/common/chat-parser-xml-toolcall.cpp +879 -0
- package/cpp/common/chat-parser-xml-toolcall.h +45 -0
- package/cpp/common/chat-parser.cpp +1649 -0
- package/cpp/common/chat-parser.h +133 -0
- package/cpp/common/chat-peg-parser.cpp +124 -0
- package/cpp/common/chat-peg-parser.h +105 -0
- package/cpp/common/chat.cpp +3355 -0
- package/cpp/common/chat.h +252 -0
- package/cpp/common/common.cpp +1824 -0
- package/cpp/common/common.h +930 -0
- package/cpp/common/console.cpp +1137 -0
- package/cpp/common/console.h +41 -0
- package/cpp/common/debug.cpp +167 -0
- package/cpp/common/debug.h +43 -0
- package/cpp/common/download.cpp +792 -0
- package/cpp/common/download.h +84 -0
- package/cpp/common/http.h +84 -0
- package/cpp/common/jinja/README.md +88 -0
- package/cpp/common/jinja/caps.cpp +285 -0
- package/cpp/common/jinja/caps.h +30 -0
- package/cpp/common/jinja/lexer.cpp +341 -0
- package/cpp/common/jinja/lexer.h +157 -0
- package/cpp/common/jinja/parser.cpp +591 -0
- package/cpp/common/jinja/parser.h +21 -0
- package/cpp/common/jinja/runtime.cpp +867 -0
- package/cpp/common/jinja/runtime.h +638 -0
- package/cpp/common/jinja/string.cpp +213 -0
- package/cpp/common/jinja/string.h +61 -0
- package/cpp/common/jinja/utils.h +149 -0
- package/cpp/common/jinja/value.cpp +1393 -0
- package/cpp/common/jinja/value.h +756 -0
- package/cpp/common/json-partial.cpp +324 -0
- package/cpp/common/json-partial.h +39 -0
- package/cpp/common/json-schema-to-grammar.cpp +1153 -0
- package/cpp/common/json-schema-to-grammar.h +43 -0
- package/cpp/common/llguidance.cpp +258 -0
- package/cpp/common/log.cpp +446 -0
- package/cpp/common/log.h +119 -0
- package/cpp/common/ngram-cache.cpp +285 -0
- package/cpp/common/ngram-cache.h +101 -0
- package/cpp/common/ngram-map.cpp +530 -0
- package/cpp/common/ngram-map.h +115 -0
- package/cpp/common/ngram-mod.cpp +60 -0
- package/cpp/common/ngram-mod.h +38 -0
- package/cpp/common/peg-parser.cpp +1712 -0
- package/cpp/common/peg-parser.h +459 -0
- package/cpp/common/preset.cpp +483 -0
- package/cpp/common/preset.h +83 -0
- package/cpp/common/regex-partial.cpp +204 -0
- package/cpp/common/regex-partial.h +56 -0
- package/cpp/common/sampling.cpp +745 -0
- package/cpp/common/sampling.h +119 -0
- package/cpp/common/speculative.cpp +1074 -0
- package/cpp/common/speculative.h +41 -0
- package/cpp/common/unicode.cpp +64 -0
- package/cpp/common/unicode.h +22 -0
- package/cpp/ggml/CMakeLists.txt +494 -0
- package/cpp/ggml/cmake/GitVars.cmake +22 -0
- package/cpp/ggml/cmake/common.cmake +50 -0
- package/cpp/ggml/cmake/ggml-config.cmake.in +191 -0
- package/cpp/ggml/include/ggml-alloc.h +85 -0
- package/cpp/ggml/include/ggml-backend.h +373 -0
- package/cpp/ggml/include/ggml-blas.h +25 -0
- package/cpp/ggml/include/ggml-cann.h +123 -0
- package/cpp/ggml/include/ggml-cpp.h +39 -0
- package/cpp/ggml/include/ggml-cpu.h +151 -0
- package/cpp/ggml/include/ggml-cuda.h +47 -0
- package/cpp/ggml/include/ggml-hexagon.h +19 -0
- package/cpp/ggml/include/ggml-metal.h +61 -0
- package/cpp/ggml/include/ggml-opencl.h +26 -0
- package/cpp/ggml/include/ggml-opt.h +256 -0
- package/cpp/ggml/include/ggml-rpc.h +30 -0
- package/cpp/ggml/include/ggml-sycl.h +49 -0
- package/cpp/ggml/include/ggml-virtgpu.h +14 -0
- package/cpp/ggml/include/ggml-vulkan.h +29 -0
- package/cpp/ggml/include/ggml-webgpu.h +19 -0
- package/cpp/ggml/include/ggml-zdnn.h +17 -0
- package/cpp/ggml/include/ggml-zendnn.h +22 -0
- package/cpp/ggml/include/ggml.h +2753 -0
- package/cpp/ggml/include/gguf.h +204 -0
- package/cpp/ggml/src/CMakeLists.txt +492 -0
- package/cpp/ggml/src/ggml-alloc.c +1244 -0
- package/cpp/ggml/src/ggml-backend-dl.cpp +48 -0
- package/cpp/ggml/src/ggml-backend-dl.h +45 -0
- package/cpp/ggml/src/ggml-backend-impl.h +255 -0
- package/cpp/ggml/src/ggml-backend-reg.cpp +566 -0
- package/cpp/ggml/src/ggml-backend.cpp +2270 -0
- package/cpp/ggml/src/ggml-blas/CMakeLists.txt +101 -0
- package/cpp/ggml/src/ggml-blas/ggml-blas.cpp +518 -0
- package/cpp/ggml/src/ggml-common.h +1878 -0
- package/cpp/ggml/src/ggml-cpu/CMakeLists.txt +691 -0
- package/cpp/ggml/src/ggml-cpu/amx/amx.cpp +247 -0
- package/cpp/ggml/src/ggml-cpu/amx/amx.h +8 -0
- package/cpp/ggml/src/ggml-cpu/amx/common.h +91 -0
- package/cpp/ggml/src/ggml-cpu/amx/mmq.cpp +2512 -0
- package/cpp/ggml/src/ggml-cpu/amx/mmq.h +10 -0
- package/cpp/ggml/src/ggml-cpu/arch/arm/cpu-feats.cpp +98 -0
- package/cpp/ggml/src/ggml-cpu/arch/arm/quants.c +4052 -0
- package/cpp/ggml/src/ggml-cpu/arch/arm/repack.cpp +4935 -0
- package/cpp/ggml/src/ggml-cpu/arch/loongarch/quants.c +2159 -0
- package/cpp/ggml/src/ggml-cpu/arch/powerpc/cpu-feats.cpp +82 -0
- package/cpp/ggml/src/ggml-cpu/arch/powerpc/quants.c +2305 -0
- package/cpp/ggml/src/ggml-cpu/arch/riscv/cpu-feats.cpp +38 -0
- package/cpp/ggml/src/ggml-cpu/arch/riscv/quants.c +2726 -0
- package/cpp/ggml/src/ggml-cpu/arch/riscv/repack.cpp +342 -0
- package/cpp/ggml/src/ggml-cpu/arch/s390/cpu-feats.cpp +50 -0
- package/cpp/ggml/src/ggml-cpu/arch/s390/quants.c +1468 -0
- package/cpp/ggml/src/ggml-cpu/arch/wasm/quants.c +1221 -0
- package/cpp/ggml/src/ggml-cpu/arch/x86/cpu-feats.cpp +327 -0
- package/cpp/ggml/src/ggml-cpu/arch/x86/quants.c +3820 -0
- package/cpp/ggml/src/ggml-cpu/arch/x86/repack.cpp +6307 -0
- package/cpp/ggml/src/ggml-cpu/arch-fallback.h +313 -0
- package/cpp/ggml/src/ggml-cpu/binary-ops.cpp +154 -0
- package/cpp/ggml/src/ggml-cpu/binary-ops.h +16 -0
- package/cpp/ggml/src/ggml-cpu/cmake/FindSIMD.cmake +100 -0
- package/cpp/ggml/src/ggml-cpu/common.h +95 -0
- package/cpp/ggml/src/ggml-cpu/ggml-cpu-impl.h +529 -0
- package/cpp/ggml/src/ggml-cpu/ggml-cpu.c +3734 -0
- package/cpp/ggml/src/ggml-cpu/ggml-cpu.cpp +701 -0
- package/cpp/ggml/src/ggml-cpu/hbm.cpp +55 -0
- package/cpp/ggml/src/ggml-cpu/hbm.h +8 -0
- package/cpp/ggml/src/ggml-cpu/kleidiai/kernels.cpp +938 -0
- package/cpp/ggml/src/ggml-cpu/kleidiai/kernels.h +90 -0
- package/cpp/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +798 -0
- package/cpp/ggml/src/ggml-cpu/kleidiai/kleidiai.h +17 -0
- package/cpp/ggml/src/ggml-cpu/llamafile/sgemm.cpp +4033 -0
- package/cpp/ggml/src/ggml-cpu/llamafile/sgemm.h +25 -0
- package/cpp/ggml/src/ggml-cpu/ops.cpp +10978 -0
- package/cpp/ggml/src/ggml-cpu/ops.h +116 -0
- package/cpp/ggml/src/ggml-cpu/quants.c +1193 -0
- package/cpp/ggml/src/ggml-cpu/quants.h +97 -0
- package/cpp/ggml/src/ggml-cpu/repack.cpp +3316 -0
- package/cpp/ggml/src/ggml-cpu/repack.h +173 -0
- package/cpp/ggml/src/ggml-cpu/simd-gemm.h +136 -0
- package/cpp/ggml/src/ggml-cpu/simd-mappings.h +1279 -0
- package/cpp/ggml/src/ggml-cpu/spacemit/ime.cpp +1025 -0
- package/cpp/ggml/src/ggml-cpu/spacemit/ime.h +13 -0
- package/cpp/ggml/src/ggml-cpu/spacemit/ime1_kernels.cpp +3196 -0
- package/cpp/ggml/src/ggml-cpu/spacemit/ime_kernels.h +26 -0
- package/cpp/ggml/src/ggml-cpu/traits.cpp +36 -0
- package/cpp/ggml/src/ggml-cpu/traits.h +38 -0
- package/cpp/ggml/src/ggml-cpu/unary-ops.cpp +337 -0
- package/cpp/ggml/src/ggml-cpu/unary-ops.h +35 -0
- package/cpp/ggml/src/ggml-cpu/vec.cpp +629 -0
- package/cpp/ggml/src/ggml-cpu/vec.h +1585 -0
- package/cpp/ggml/src/ggml-hexagon/CMakeLists.txt +117 -0
- package/cpp/ggml/src/ggml-hexagon/ggml-hexagon.cpp +3232 -0
- package/cpp/ggml/src/ggml-hexagon/htp/CMakeLists.txt +45 -0
- package/cpp/ggml/src/ggml-hexagon/htp/act-ops.c +815 -0
- package/cpp/ggml/src/ggml-hexagon/htp/argsort-ops.c +281 -0
- package/cpp/ggml/src/ggml-hexagon/htp/binary-ops.c +827 -0
- package/cpp/ggml/src/ggml-hexagon/htp/cmake-toolchain.cmake +157 -0
- package/cpp/ggml/src/ggml-hexagon/htp/cpy-ops.c +251 -0
- package/cpp/ggml/src/ggml-hexagon/htp/flash-attn-ops.c +666 -0
- package/cpp/ggml/src/ggml-hexagon/htp/get-rows-ops.c +111 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hex-dma.c +63 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hex-dma.h +182 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hex-dump.h +77 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hex-fastdiv.h +37 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hex-utils.h +51 -0
- package/cpp/ggml/src/ggml-hexagon/htp/htp-ctx.h +35 -0
- package/cpp/ggml/src/ggml-hexagon/htp/htp-msg.h +154 -0
- package/cpp/ggml/src/ggml-hexagon/htp/htp-ops.h +65 -0
- package/cpp/ggml/src/ggml-hexagon/htp/htp_iface.idl +16 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-arith.h +470 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-base.h +173 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-copy.h +245 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-div.h +116 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-dump.h +129 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-exp.h +215 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-floor.h +100 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-inverse.h +176 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-reduce.h +266 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-scale.h +133 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-sigmoid.h +141 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-sqrt.h +126 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-types.h +36 -0
- package/cpp/ggml/src/ggml-hexagon/htp/hvx-utils.h +18 -0
- package/cpp/ggml/src/ggml-hexagon/htp/main.c +1150 -0
- package/cpp/ggml/src/ggml-hexagon/htp/matmul-ops.c +2595 -0
- package/cpp/ggml/src/ggml-hexagon/htp/rope-ops.c +498 -0
- package/cpp/ggml/src/ggml-hexagon/htp/set-rows-ops.c +167 -0
- package/cpp/ggml/src/ggml-hexagon/htp/softmax-ops.c +421 -0
- package/cpp/ggml/src/ggml-hexagon/htp/sum-rows-ops.c +130 -0
- package/cpp/ggml/src/ggml-hexagon/htp/unary-ops.c +384 -0
- package/cpp/ggml/src/ggml-hexagon/htp/worker-pool.c +293 -0
- package/cpp/ggml/src/ggml-hexagon/htp/worker-pool.h +57 -0
- package/cpp/ggml/src/ggml-hexagon/htp-drv.cpp +418 -0
- package/cpp/ggml/src/ggml-hexagon/htp-drv.h +121 -0
- package/cpp/ggml/src/ggml-hexagon/libdl.h +79 -0
- package/cpp/ggml/src/ggml-hexagon/libggml-htp.inf +38 -0
- package/cpp/ggml/src/ggml-hexagon/op-desc.h +153 -0
- package/cpp/ggml/src/ggml-impl.h +724 -0
- package/cpp/ggml/src/ggml-metal/CMakeLists.txt +124 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-common.cpp +457 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-common.h +52 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-context.h +41 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-context.m +702 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-device.cpp +1890 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-device.h +290 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-device.m +1749 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-impl.h +1054 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-ops.cpp +4370 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal-ops.h +94 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal.cpp +937 -0
- package/cpp/ggml/src/ggml-metal/ggml-metal.metal +9819 -0
- package/cpp/ggml/src/ggml-musa/CMakeLists.txt +125 -0
- package/cpp/ggml/src/ggml-musa/mudnn.cu +112 -0
- package/cpp/ggml/src/ggml-musa/mudnn.cuh +12 -0
- package/cpp/ggml/src/ggml-opencl/CMakeLists.txt +150 -0
- package/cpp/ggml/src/ggml-opencl/ggml-opencl.cpp +11553 -0
- package/cpp/ggml/src/ggml-opencl/kernels/add.cl +190 -0
- package/cpp/ggml/src/ggml-opencl/kernels/add_id.cl +42 -0
- package/cpp/ggml/src/ggml-opencl/kernels/argsort.cl +86 -0
- package/cpp/ggml/src/ggml-opencl/kernels/clamp.cl +20 -0
- package/cpp/ggml/src/ggml-opencl/kernels/concat.cl +51 -0
- package/cpp/ggml/src/ggml-opencl/kernels/conv2d.cl +185 -0
- package/cpp/ggml/src/ggml-opencl/kernels/conv2d_f16_f32.cl +176 -0
- package/cpp/ggml/src/ggml-opencl/kernels/cpy.cl +184 -0
- package/cpp/ggml/src/ggml-opencl/kernels/cvt.cl +417 -0
- package/cpp/ggml/src/ggml-opencl/kernels/diag_mask_inf.cl +58 -0
- package/cpp/ggml/src/ggml-opencl/kernels/div.cl +138 -0
- package/cpp/ggml/src/ggml-opencl/kernels/embed_kernel.py +26 -0
- package/cpp/ggml/src/ggml-opencl/kernels/expm1.cl +113 -0
- package/cpp/ggml/src/ggml-opencl/kernels/fill.cl +17 -0
- package/cpp/ggml/src/ggml-opencl/kernels/flash_attn_f16.cl +370 -0
- package/cpp/ggml/src/ggml-opencl/kernels/flash_attn_f32.cl +371 -0
- package/cpp/ggml/src/ggml-opencl/kernels/flash_attn_f32_f16.cl +373 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gelu.cl +89 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gemm_moe_mxfp4_f32.cl +162 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gemv_moe_mxfp4_f32.cl +156 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gemv_noshuffle.cl +268 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gemv_noshuffle_general.cl +274 -0
- package/cpp/ggml/src/ggml-opencl/kernels/gemv_noshuffle_general_q8_0_f32.cl +195 -0
- package/cpp/ggml/src/ggml-opencl/kernels/get_rows.cl +187 -0
- package/cpp/ggml/src/ggml-opencl/kernels/glu.cl +378 -0
- package/cpp/ggml/src/ggml-opencl/kernels/group_norm.cl +121 -0
- package/cpp/ggml/src/ggml-opencl/kernels/im2col_f16.cl +57 -0
- package/cpp/ggml/src/ggml-opencl/kernels/im2col_f32.cl +57 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mean.cl +140 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul.cl +152 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mat_Ab_Bi_8x4.cl +139 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mat_f16_f32.cl +130 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_kq_kqv.cl +273 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_l4_lm.cl +146 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_f32_f32_l4_lm.cl +147 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_q4_0_f32_l4_lm.cl +163 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_q4_1_f32_l4_lm.cl +165 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_q6_k_f32_l4_lm.cl +158 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_q8_0_f32_8x4.cl +129 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mm_q8_0_f32_l4_lm.cl +154 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_f16_f16.cl +118 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32.cl +118 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_1row.cl +94 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_l4.cl +84 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_f32_f32.cl +118 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32.cl +189 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32_flat.cl +176 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_id_q4_0_f32_8x_flat.cl +283 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32.cl +140 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32_flat.cl +222 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_mxfp4_f32.cl +144 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_mxfp4_f32_flat.cl +167 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32.cl +192 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_1d_16x_flat.cl +307 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_1d_8x_flat.cl +265 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_8x_flat.cl +272 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_0_f32_v.cl +254 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_1_f32.cl +219 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_1_f32_flat.cl +229 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q4_k_f32.cl +180 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q6_k_f32.cl +194 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q6_k_f32_flat.cl +194 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q8_0_f32.cl +125 -0
- package/cpp/ggml/src/ggml-opencl/kernels/mul_mv_q8_0_f32_flat.cl +202 -0
- package/cpp/ggml/src/ggml-opencl/kernels/norm.cl +161 -0
- package/cpp/ggml/src/ggml-opencl/kernels/pad.cl +39 -0
- package/cpp/ggml/src/ggml-opencl/kernels/relu.cl +16 -0
- package/cpp/ggml/src/ggml-opencl/kernels/repeat.cl +38 -0
- package/cpp/ggml/src/ggml-opencl/kernels/rms_norm.cl +190 -0
- package/cpp/ggml/src/ggml-opencl/kernels/rope.cl +747 -0
- package/cpp/ggml/src/ggml-opencl/kernels/scale.cl +27 -0
- package/cpp/ggml/src/ggml-opencl/kernels/set_rows.cl +208 -0
- package/cpp/ggml/src/ggml-opencl/kernels/sigmoid.cl +29 -0
- package/cpp/ggml/src/ggml-opencl/kernels/silu.cl +30 -0
- package/cpp/ggml/src/ggml-opencl/kernels/softmax_4_f16.cl +108 -0
- package/cpp/ggml/src/ggml-opencl/kernels/softmax_4_f32.cl +108 -0
- package/cpp/ggml/src/ggml-opencl/kernels/softmax_f16.cl +107 -0
- package/cpp/ggml/src/ggml-opencl/kernels/softmax_f32.cl +107 -0
- package/cpp/ggml/src/ggml-opencl/kernels/softplus.cl +116 -0
- package/cpp/ggml/src/ggml-opencl/kernels/solve_tri.cl +51 -0
- package/cpp/ggml/src/ggml-opencl/kernels/sqr.cl +53 -0
- package/cpp/ggml/src/ggml-opencl/kernels/sqrt.cl +53 -0
- package/cpp/ggml/src/ggml-opencl/kernels/ssm_conv.cl +77 -0
- package/cpp/ggml/src/ggml-opencl/kernels/sub.cl +138 -0
- package/cpp/ggml/src/ggml-opencl/kernels/sum_rows.cl +140 -0
- package/cpp/ggml/src/ggml-opencl/kernels/tanh.cl +109 -0
- package/cpp/ggml/src/ggml-opencl/kernels/transpose.cl +117 -0
- package/cpp/ggml/src/ggml-opencl/kernels/tri.cl +32 -0
- package/cpp/ggml/src/ggml-opencl/kernels/tsembd.cl +48 -0
- package/cpp/ggml/src/ggml-opencl/kernels/upscale.cl +120 -0
- package/cpp/ggml/src/ggml-opt.cpp +1093 -0
- package/cpp/ggml/src/ggml-quants.c +5325 -0
- package/cpp/ggml/src/ggml-quants.h +106 -0
- package/cpp/ggml/src/ggml-rpc/CMakeLists.txt +9 -0
- package/cpp/ggml/src/ggml-rpc/ggml-rpc.cpp +2118 -0
- package/cpp/ggml/src/ggml-threading.cpp +12 -0
- package/cpp/ggml/src/ggml-threading.h +14 -0
- package/cpp/ggml/src/ggml-virtgpu/CMakeLists.txt +70 -0
- package/cpp/ggml/src/ggml-virtgpu/apir_cs_ggml-rpc-front.cpp +87 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/CMakeLists.txt +21 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/apir_cs_ggml-rpc-back.cpp +115 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-convert.h +13 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched-backend.cpp +102 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched-buffer-type.cpp +105 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched-buffer.cpp +179 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched-device.cpp +148 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched.cpp +51 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched.gen.h +73 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-dispatched.h +27 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend-virgl-apir.h +32 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/backend.cpp +144 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/api_remoting.h +95 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/apir_backend.gen.h +94 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/apir_backend.h +50 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/apir_cs.h +378 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/apir_cs_ggml.h +232 -0
- package/cpp/ggml/src/ggml-virtgpu/backend/shared/apir_cs_rpc.h +58 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-backend-buffer-type.cpp +81 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-backend-buffer.cpp +119 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-backend-device.cpp +158 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-backend-reg.cpp +213 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-backend.cpp +69 -0
- package/cpp/ggml/src/ggml-virtgpu/ggml-remoting.h +71 -0
- package/cpp/ggml/src/ggml-virtgpu/ggmlremoting_functions.yaml +166 -0
- package/cpp/ggml/src/ggml-virtgpu/include/apir_hw.h +9 -0
- package/cpp/ggml/src/ggml-virtgpu/regenerate_remoting.py +333 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-apir.h +15 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward-backend.cpp +58 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward-buffer-type.cpp +110 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward-buffer.cpp +173 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward-device.cpp +192 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward-impl.h +36 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-forward.gen.h +53 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-shm.cpp +98 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-shm.h +23 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-utils.cpp +179 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu-utils.h +86 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu.cpp +544 -0
- package/cpp/ggml/src/ggml-virtgpu/virtgpu.h +117 -0
- package/cpp/ggml/src/ggml-webgpu/CMakeLists.txt +80 -0
- package/cpp/ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp +1231 -0
- package/cpp/ggml/src/ggml-webgpu/ggml-webgpu.cpp +3150 -0
- package/cpp/ggml/src/ggml-webgpu/pre_wgsl.hpp +778 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/argmax.wgsl +72 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/argsort.wgsl +106 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/argsort_merge.wgsl +134 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/binary.wgsl +107 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/common_decls.tmpl +923 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/cpy.tmpl.wgsl +107 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/cumsum.wgsl +66 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/embed_wgsl.py +182 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl +636 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/get_rows.wgsl +668 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/glu.tmpl.wgsl +323 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/memset.wgsl +40 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat.wgsl +713 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_decls.tmpl +103 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_reg_tile.wgsl +138 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_subgroup_matrix.wgsl +188 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec.wgsl +194 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/pad.wgsl +86 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm.wgsl +123 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/rope.tmpl.wgsl +295 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/scale.wgsl +63 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/set_rows.wgsl +109 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/soft_max.tmpl.wgsl +345 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/sum_rows.wgsl +55 -0
- package/cpp/ggml/src/ggml-webgpu/wgsl-shaders/unary.wgsl +193 -0
- package/cpp/ggml/src/ggml-zdnn/CMakeLists.txt +36 -0
- package/cpp/ggml/src/ggml-zdnn/common.hpp +59 -0
- package/cpp/ggml/src/ggml-zdnn/ggml-zdnn.cpp +633 -0
- package/cpp/ggml/src/ggml-zdnn/mmf.cpp +80 -0
- package/cpp/ggml/src/ggml-zdnn/mmf.hpp +12 -0
- package/cpp/ggml/src/ggml-zdnn/utils.cpp +79 -0
- package/cpp/ggml/src/ggml-zdnn/utils.hpp +19 -0
- package/cpp/ggml/src/ggml-zendnn/CMakeLists.txt +92 -0
- package/cpp/ggml/src/ggml-zendnn/ggml-zendnn.cpp +469 -0
- package/cpp/ggml/src/ggml.c +7669 -0
- package/cpp/ggml/src/ggml.cpp +26 -0
- package/cpp/ggml/src/gguf.cpp +1699 -0
- package/cpp/include/llama-cpp.h +32 -0
- package/cpp/include/llama.h +1568 -0
- package/cpp/mtmd/CMakeLists.txt +98 -0
- package/cpp/mtmd/README.md +63 -0
- package/cpp/mtmd/clip-graph.h +117 -0
- package/cpp/mtmd/clip-impl.h +586 -0
- package/cpp/mtmd/clip-model.h +390 -0
- package/cpp/mtmd/clip.cpp +4154 -0
- package/cpp/mtmd/clip.h +121 -0
- package/cpp/mtmd/deprecation-warning.cpp +22 -0
- package/cpp/mtmd/legacy-models/convert_image_encoder_to_gguf.py +412 -0
- package/cpp/mtmd/legacy-models/glmedge-convert-image-encoder-to-gguf.py +280 -0
- package/cpp/mtmd/legacy-models/glmedge-surgery.py +33 -0
- package/cpp/mtmd/legacy-models/llava_surgery.py +38 -0
- package/cpp/mtmd/legacy-models/llava_surgery_v2.py +180 -0
- package/cpp/mtmd/legacy-models/minicpmv-convert-image-encoder-to-gguf.py +892 -0
- package/cpp/mtmd/legacy-models/minicpmv-surgery.py +47 -0
- package/cpp/mtmd/models/cogvlm.cpp +98 -0
- package/cpp/mtmd/models/conformer.cpp +216 -0
- package/cpp/mtmd/models/glm4v.cpp +122 -0
- package/cpp/mtmd/models/internvl.cpp +69 -0
- package/cpp/mtmd/models/kimik25.cpp +101 -0
- package/cpp/mtmd/models/kimivl.cpp +63 -0
- package/cpp/mtmd/models/llama4.cpp +96 -0
- package/cpp/mtmd/models/llava.cpp +374 -0
- package/cpp/mtmd/models/minicpmv.cpp +114 -0
- package/cpp/mtmd/models/mobilenetv5.cpp +451 -0
- package/cpp/mtmd/models/models.h +128 -0
- package/cpp/mtmd/models/nemotron-v2-vl.cpp +35 -0
- package/cpp/mtmd/models/paddleocr.cpp +52 -0
- package/cpp/mtmd/models/pixtral.cpp +86 -0
- package/cpp/mtmd/models/qwen2vl.cpp +183 -0
- package/cpp/mtmd/models/qwen3vl.cpp +193 -0
- package/cpp/mtmd/models/siglip.cpp +86 -0
- package/cpp/mtmd/models/whisper-enc.cpp +115 -0
- package/cpp/mtmd/models/youtuvl.cpp +179 -0
- package/cpp/mtmd/mtmd-audio.cpp +730 -0
- package/cpp/mtmd/mtmd-audio.h +113 -0
- package/cpp/mtmd/mtmd-cli.cpp +437 -0
- package/cpp/mtmd/mtmd-helper.cpp +521 -0
- package/cpp/mtmd/mtmd-helper.h +96 -0
- package/cpp/mtmd/mtmd.cpp +1156 -0
- package/cpp/mtmd/mtmd.h +319 -0
- package/cpp/mtmd/requirements.txt +5 -0
- package/cpp/mtmd/test-1.jpeg +0 -0
- package/cpp/mtmd/test-2.mp3 +0 -0
- package/cpp/mtmd/tests.sh +192 -0
- package/cpp/src/CMakeLists.txt +169 -0
- package/cpp/src/llama-adapter.cpp +488 -0
- package/cpp/src/llama-adapter.h +89 -0
- package/cpp/src/llama-arch.cpp +2855 -0
- package/cpp/src/llama-arch.h +619 -0
- package/cpp/src/llama-batch.cpp +917 -0
- package/cpp/src/llama-batch.h +173 -0
- package/cpp/src/llama-chat.cpp +896 -0
- package/cpp/src/llama-chat.h +71 -0
- package/cpp/src/llama-context.cpp +3512 -0
- package/cpp/src/llama-context.h +359 -0
- package/cpp/src/llama-cparams.cpp +5 -0
- package/cpp/src/llama-cparams.h +44 -0
- package/cpp/src/llama-grammar.cpp +1464 -0
- package/cpp/src/llama-grammar.h +194 -0
- package/cpp/src/llama-graph.cpp +2685 -0
- package/cpp/src/llama-graph.h +1026 -0
- package/cpp/src/llama-hparams.cpp +234 -0
- package/cpp/src/llama-hparams.h +339 -0
- package/cpp/src/llama-impl.cpp +171 -0
- package/cpp/src/llama-impl.h +73 -0
- package/cpp/src/llama-io.cpp +15 -0
- package/cpp/src/llama-io.h +35 -0
- package/cpp/src/llama-kv-cache-iswa.cpp +330 -0
- package/cpp/src/llama-kv-cache-iswa.h +137 -0
- package/cpp/src/llama-kv-cache.cpp +2271 -0
- package/cpp/src/llama-kv-cache.h +388 -0
- package/cpp/src/llama-kv-cells.h +533 -0
- package/cpp/src/llama-memory-hybrid-iswa.cpp +275 -0
- package/cpp/src/llama-memory-hybrid-iswa.h +140 -0
- package/cpp/src/llama-memory-hybrid.cpp +268 -0
- package/cpp/src/llama-memory-hybrid.h +139 -0
- package/cpp/src/llama-memory-recurrent.cpp +1165 -0
- package/cpp/src/llama-memory-recurrent.h +182 -0
- package/cpp/src/llama-memory.cpp +59 -0
- package/cpp/src/llama-memory.h +122 -0
- package/cpp/src/llama-mmap.cpp +785 -0
- package/cpp/src/llama-mmap.h +92 -0
- package/cpp/src/llama-model-loader.cpp +1414 -0
- package/cpp/src/llama-model-loader.h +203 -0
- package/cpp/src/llama-model-saver.cpp +286 -0
- package/cpp/src/llama-model-saver.h +37 -0
- package/cpp/src/llama-model.cpp +9253 -0
- package/cpp/src/llama-model.h +576 -0
- package/cpp/src/llama-quant.cpp +1119 -0
- package/cpp/src/llama-quant.h +1 -0
- package/cpp/src/llama-sampler.cpp +3885 -0
- package/cpp/src/llama-sampler.h +42 -0
- package/cpp/src/llama-vocab.cpp +3970 -0
- package/cpp/src/llama-vocab.h +187 -0
- package/cpp/src/llama.cpp +1313 -0
- package/cpp/src/models/afmoe.cpp +191 -0
- package/cpp/src/models/apertus.cpp +125 -0
- package/cpp/src/models/arcee.cpp +135 -0
- package/cpp/src/models/arctic.cpp +138 -0
- package/cpp/src/models/arwkv7.cpp +86 -0
- package/cpp/src/models/baichuan.cpp +122 -0
- package/cpp/src/models/bailingmoe.cpp +144 -0
- package/cpp/src/models/bailingmoe2.cpp +135 -0
- package/cpp/src/models/bert.cpp +178 -0
- package/cpp/src/models/bitnet.cpp +160 -0
- package/cpp/src/models/bloom.cpp +101 -0
- package/cpp/src/models/chameleon.cpp +178 -0
- package/cpp/src/models/chatglm.cpp +132 -0
- package/cpp/src/models/codeshell.cpp +111 -0
- package/cpp/src/models/cogvlm.cpp +102 -0
- package/cpp/src/models/cohere2-iswa.cpp +134 -0
- package/cpp/src/models/command-r.cpp +122 -0
- package/cpp/src/models/dbrx.cpp +123 -0
- package/cpp/src/models/deci.cpp +135 -0
- package/cpp/src/models/deepseek.cpp +144 -0
- package/cpp/src/models/deepseek2.cpp +262 -0
- package/cpp/src/models/delta-net-base.cpp +376 -0
- package/cpp/src/models/dots1.cpp +134 -0
- package/cpp/src/models/dream.cpp +105 -0
- package/cpp/src/models/ernie4-5-moe.cpp +150 -0
- package/cpp/src/models/ernie4-5.cpp +110 -0
- package/cpp/src/models/eurobert.cpp +97 -0
- package/cpp/src/models/exaone-moe.cpp +146 -0
- package/cpp/src/models/exaone.cpp +114 -0
- package/cpp/src/models/exaone4.cpp +123 -0
- package/cpp/src/models/falcon-h1.cpp +111 -0
- package/cpp/src/models/falcon.cpp +120 -0
- package/cpp/src/models/gemma-embedding.cpp +116 -0
- package/cpp/src/models/gemma.cpp +112 -0
- package/cpp/src/models/gemma2-iswa.cpp +128 -0
- package/cpp/src/models/gemma3.cpp +155 -0
- package/cpp/src/models/gemma3n-iswa.cpp +384 -0
- package/cpp/src/models/glm4-moe.cpp +170 -0
- package/cpp/src/models/glm4.cpp +157 -0
- package/cpp/src/models/gpt2.cpp +105 -0
- package/cpp/src/models/gptneox.cpp +144 -0
- package/cpp/src/models/granite-hybrid.cpp +196 -0
- package/cpp/src/models/granite.cpp +211 -0
- package/cpp/src/models/grok.cpp +159 -0
- package/cpp/src/models/grovemoe.cpp +141 -0
- package/cpp/src/models/hunyuan-dense.cpp +132 -0
- package/cpp/src/models/hunyuan-moe.cpp +154 -0
- package/cpp/src/models/internlm2.cpp +120 -0
- package/cpp/src/models/jais.cpp +86 -0
- package/cpp/src/models/jais2.cpp +123 -0
- package/cpp/src/models/jamba.cpp +106 -0
- package/cpp/src/models/kimi-linear.cpp +392 -0
- package/cpp/src/models/lfm2.cpp +190 -0
- package/cpp/src/models/llada-moe.cpp +122 -0
- package/cpp/src/models/llada.cpp +99 -0
- package/cpp/src/models/llama-iswa.cpp +178 -0
- package/cpp/src/models/llama.cpp +168 -0
- package/cpp/src/models/maincoder.cpp +117 -0
- package/cpp/src/models/mamba-base.cpp +285 -0
- package/cpp/src/models/mamba.cpp +54 -0
- package/cpp/src/models/mimo2-iswa.cpp +123 -0
- package/cpp/src/models/minicpm3.cpp +200 -0
- package/cpp/src/models/minimax-m2.cpp +124 -0
- package/cpp/src/models/mistral3.cpp +160 -0
- package/cpp/src/models/models.h +684 -0
- package/cpp/src/models/modern-bert.cpp +109 -0
- package/cpp/src/models/mpt.cpp +126 -0
- package/cpp/src/models/nemotron-h.cpp +148 -0
- package/cpp/src/models/nemotron.cpp +122 -0
- package/cpp/src/models/neo-bert.cpp +104 -0
- package/cpp/src/models/olmo.cpp +121 -0
- package/cpp/src/models/olmo2.cpp +150 -0
- package/cpp/src/models/olmoe.cpp +124 -0
- package/cpp/src/models/openai-moe-iswa.cpp +127 -0
- package/cpp/src/models/openelm.cpp +124 -0
- package/cpp/src/models/orion.cpp +123 -0
- package/cpp/src/models/paddleocr.cpp +122 -0
- package/cpp/src/models/pangu-embedded.cpp +121 -0
- package/cpp/src/models/phi2.cpp +121 -0
- package/cpp/src/models/phi3.cpp +152 -0
- package/cpp/src/models/plamo.cpp +110 -0
- package/cpp/src/models/plamo2.cpp +318 -0
- package/cpp/src/models/plamo3.cpp +128 -0
- package/cpp/src/models/plm.cpp +169 -0
- package/cpp/src/models/qwen.cpp +108 -0
- package/cpp/src/models/qwen2.cpp +126 -0
- package/cpp/src/models/qwen2moe.cpp +151 -0
- package/cpp/src/models/qwen2vl.cpp +117 -0
- package/cpp/src/models/qwen3.cpp +117 -0
- package/cpp/src/models/qwen35.cpp +386 -0
- package/cpp/src/models/qwen35moe.cpp +420 -0
- package/cpp/src/models/qwen3moe.cpp +124 -0
- package/cpp/src/models/qwen3next.cpp +525 -0
- package/cpp/src/models/qwen3vl-moe.cpp +140 -0
- package/cpp/src/models/qwen3vl.cpp +132 -0
- package/cpp/src/models/refact.cpp +94 -0
- package/cpp/src/models/rnd1.cpp +126 -0
- package/cpp/src/models/rwkv6-base.cpp +164 -0
- package/cpp/src/models/rwkv6.cpp +94 -0
- package/cpp/src/models/rwkv6qwen2.cpp +86 -0
- package/cpp/src/models/rwkv7-base.cpp +137 -0
- package/cpp/src/models/rwkv7.cpp +90 -0
- package/cpp/src/models/seed-oss.cpp +124 -0
- package/cpp/src/models/smallthinker.cpp +126 -0
- package/cpp/src/models/smollm3.cpp +128 -0
- package/cpp/src/models/stablelm.cpp +146 -0
- package/cpp/src/models/starcoder.cpp +100 -0
- package/cpp/src/models/starcoder2.cpp +121 -0
- package/cpp/src/models/step35-iswa.cpp +168 -0
- package/cpp/src/models/t5-dec.cpp +166 -0
- package/cpp/src/models/t5-enc.cpp +96 -0
- package/cpp/src/models/wavtokenizer-dec.cpp +149 -0
- package/cpp/src/models/xverse.cpp +108 -0
- package/cpp/src/unicode-data.cpp +7034 -0
- package/cpp/src/unicode-data.h +20 -0
- package/cpp/src/unicode.cpp +1103 -0
- package/cpp/src/unicode.h +111 -0
- package/cpp/vendor/nlohmann/json.hpp +25526 -0
- package/cpp/vendor/nlohmann/json_fwd.hpp +187 -0
- package/cpp/vendor/stb/stb_image.h +7988 -0
- package/ios/LocalLLM-Bridging-Header.h +2 -0
- package/ios/LocalLLM.h +5 -0
- package/ios/LocalLLM.mm +1267 -0
- package/local-llm-rn.podspec +60 -0
- package/package.json +35 -0
- package/src/NativeLocalLLM.ts +73 -0
- package/src/device.ts +50 -0
- package/src/download-adapter.ts +17 -0
- package/src/index.ts +21 -0
- package/src/native-bridge.ts +142 -0
- package/src/rn-downloader.ts +37 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
/* the rest of this file must match virglrenderer/src/apir-protocol.h */
|
|
4
|
+
|
|
5
|
+
#include <unistd.h>
|
|
6
|
+
|
|
7
|
+
#include <cstdint>
|
|
8
|
+
|
|
9
|
+
#define APIR_PROTOCOL_MAJOR 0
|
|
10
|
+
#define APIR_PROTOCOL_MINOR 1
|
|
11
|
+
|
|
12
|
+
#define APIR_HANDSHAKE_MAGIC 0xab1e
|
|
13
|
+
|
|
14
|
+
enum ApirCommandType {
|
|
15
|
+
APIR_COMMAND_TYPE_HANDSHAKE = 0,
|
|
16
|
+
APIR_COMMAND_TYPE_LOADLIBRARY = 1,
|
|
17
|
+
APIR_COMMAND_TYPE_FORWARD = 2,
|
|
18
|
+
|
|
19
|
+
APIR_COMMAND_TYPE_LENGTH = 3,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
typedef uint64_t ApirCommandFlags;
|
|
23
|
+
|
|
24
|
+
enum ApirLoadLibraryReturnCode {
|
|
25
|
+
APIR_LOAD_LIBRARY_SUCCESS = 0,
|
|
26
|
+
// these error codes are returned by the Virglrenderer APIR component
|
|
27
|
+
APIR_LOAD_LIBRARY_HYPERCALL_INITIALIZATION_ERROR = 1,
|
|
28
|
+
APIR_LOAD_LIBRARY_ALREADY_LOADED = 2,
|
|
29
|
+
APIR_LOAD_LIBRARY_ENV_VAR_MISSING = 3,
|
|
30
|
+
APIR_LOAD_LIBRARY_CANNOT_OPEN = 4,
|
|
31
|
+
APIR_LOAD_LIBRARY_SYMBOL_MISSING = 5,
|
|
32
|
+
// any value greater than this is an APIR *backend library* initialization return code
|
|
33
|
+
APIR_LOAD_LIBRARY_INIT_BASE_INDEX = 6,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
enum ApirForwardReturnCode {
|
|
37
|
+
APIR_FORWARD_SUCCESS = 0,
|
|
38
|
+
// these error codes are returned by the Virglrenderer APIR component
|
|
39
|
+
APIR_FORWARD_NO_DISPATCH_FCT = 1,
|
|
40
|
+
APIR_FORWARD_TIMEOUT = 2,
|
|
41
|
+
APIR_FORWARD_FAILED_TO_SYNC_STREAMS = 3,
|
|
42
|
+
// any value greater than this index an APIR *backend library* forward return code
|
|
43
|
+
APIR_FORWARD_BASE_INDEX = 4,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
__attribute__((unused)) static inline const char * apir_command_name(ApirCommandType type) {
|
|
47
|
+
switch (type) {
|
|
48
|
+
case APIR_COMMAND_TYPE_HANDSHAKE:
|
|
49
|
+
return "HandShake";
|
|
50
|
+
case APIR_COMMAND_TYPE_LOADLIBRARY:
|
|
51
|
+
return "LoadLibrary";
|
|
52
|
+
case APIR_COMMAND_TYPE_FORWARD:
|
|
53
|
+
return "Forward";
|
|
54
|
+
default:
|
|
55
|
+
return "unknown";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
__attribute__((unused)) static const char * apir_load_library_error(ApirLoadLibraryReturnCode code) {
|
|
60
|
+
#define APIR_LOAD_LIBRARY_ERROR(code_name) \
|
|
61
|
+
do { \
|
|
62
|
+
if (code == code_name) \
|
|
63
|
+
return #code_name; \
|
|
64
|
+
} while (0)
|
|
65
|
+
|
|
66
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_SUCCESS);
|
|
67
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_HYPERCALL_INITIALIZATION_ERROR);
|
|
68
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_ALREADY_LOADED);
|
|
69
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_ENV_VAR_MISSING);
|
|
70
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_CANNOT_OPEN);
|
|
71
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_SYMBOL_MISSING);
|
|
72
|
+
APIR_LOAD_LIBRARY_ERROR(APIR_LOAD_LIBRARY_INIT_BASE_INDEX);
|
|
73
|
+
|
|
74
|
+
return "Unknown APIR_COMMAND_TYPE_LoadLibrary error";
|
|
75
|
+
|
|
76
|
+
#undef APIR_LOAD_LIBRARY_ERROR
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
__attribute__((unused)) static const char * apir_forward_error(ApirForwardReturnCode code) {
|
|
80
|
+
#define APIR_FORWARD_ERROR(code_name) \
|
|
81
|
+
do { \
|
|
82
|
+
if (code == code_name) \
|
|
83
|
+
return #code_name; \
|
|
84
|
+
} while (0)
|
|
85
|
+
|
|
86
|
+
APIR_FORWARD_ERROR(APIR_FORWARD_SUCCESS);
|
|
87
|
+
APIR_FORWARD_ERROR(APIR_FORWARD_NO_DISPATCH_FCT);
|
|
88
|
+
APIR_FORWARD_ERROR(APIR_FORWARD_TIMEOUT);
|
|
89
|
+
APIR_FORWARD_ERROR(APIR_FORWARD_FAILED_TO_SYNC_STREAMS);
|
|
90
|
+
APIR_FORWARD_ERROR(APIR_FORWARD_BASE_INDEX);
|
|
91
|
+
|
|
92
|
+
return "Unknown APIR_COMMAND_TYPE_FORWARD error";
|
|
93
|
+
|
|
94
|
+
#undef APIR_FORWARD_ERROR
|
|
95
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
typedef enum ApirBackendCommandType {
|
|
2
|
+
|
|
3
|
+
/* device */
|
|
4
|
+
APIR_COMMAND_TYPE_DEVICE_GET_DEVICE_COUNT = 0,
|
|
5
|
+
APIR_COMMAND_TYPE_DEVICE_GET_COUNT = 1,
|
|
6
|
+
APIR_COMMAND_TYPE_DEVICE_GET_NAME = 2,
|
|
7
|
+
APIR_COMMAND_TYPE_DEVICE_GET_DESCRIPTION = 3,
|
|
8
|
+
APIR_COMMAND_TYPE_DEVICE_GET_TYPE = 4,
|
|
9
|
+
APIR_COMMAND_TYPE_DEVICE_GET_MEMORY = 5,
|
|
10
|
+
APIR_COMMAND_TYPE_DEVICE_SUPPORTS_OP = 6,
|
|
11
|
+
APIR_COMMAND_TYPE_DEVICE_GET_BUFFER_TYPE = 7,
|
|
12
|
+
APIR_COMMAND_TYPE_DEVICE_GET_PROPS = 8,
|
|
13
|
+
APIR_COMMAND_TYPE_DEVICE_BUFFER_FROM_PTR = 9,
|
|
14
|
+
|
|
15
|
+
/* buffer-type */
|
|
16
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_GET_NAME = 10,
|
|
17
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALIGNMENT = 11,
|
|
18
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_GET_MAX_SIZE = 12,
|
|
19
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST = 13,
|
|
20
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_ALLOC_BUFFER = 14,
|
|
21
|
+
APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALLOC_SIZE = 15,
|
|
22
|
+
|
|
23
|
+
/* buffer */
|
|
24
|
+
APIR_COMMAND_TYPE_BUFFER_GET_BASE = 16,
|
|
25
|
+
APIR_COMMAND_TYPE_BUFFER_SET_TENSOR = 17,
|
|
26
|
+
APIR_COMMAND_TYPE_BUFFER_GET_TENSOR = 18,
|
|
27
|
+
APIR_COMMAND_TYPE_BUFFER_CPY_TENSOR = 19,
|
|
28
|
+
APIR_COMMAND_TYPE_BUFFER_CLEAR = 20,
|
|
29
|
+
APIR_COMMAND_TYPE_BUFFER_FREE_BUFFER = 21,
|
|
30
|
+
|
|
31
|
+
/* backend */
|
|
32
|
+
APIR_COMMAND_TYPE_BACKEND_GRAPH_COMPUTE = 22,
|
|
33
|
+
|
|
34
|
+
// last command_type index + 1
|
|
35
|
+
APIR_BACKEND_DISPATCH_TABLE_COUNT = 23,
|
|
36
|
+
} ApirBackendCommandType;
|
|
37
|
+
|
|
38
|
+
static inline const char * apir_dispatch_command_name(ApirBackendCommandType type) {
|
|
39
|
+
switch (type) {
|
|
40
|
+
/* device */
|
|
41
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_DEVICE_COUNT:
|
|
42
|
+
return "device_get_device_count";
|
|
43
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_COUNT:
|
|
44
|
+
return "device_get_count";
|
|
45
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_NAME:
|
|
46
|
+
return "device_get_name";
|
|
47
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_DESCRIPTION:
|
|
48
|
+
return "device_get_description";
|
|
49
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_TYPE:
|
|
50
|
+
return "device_get_type";
|
|
51
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_MEMORY:
|
|
52
|
+
return "device_get_memory";
|
|
53
|
+
case APIR_COMMAND_TYPE_DEVICE_SUPPORTS_OP:
|
|
54
|
+
return "device_supports_op";
|
|
55
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_BUFFER_TYPE:
|
|
56
|
+
return "device_get_buffer_type";
|
|
57
|
+
case APIR_COMMAND_TYPE_DEVICE_GET_PROPS:
|
|
58
|
+
return "device_get_props";
|
|
59
|
+
case APIR_COMMAND_TYPE_DEVICE_BUFFER_FROM_PTR:
|
|
60
|
+
return "device_buffer_from_ptr";
|
|
61
|
+
/* buffer-type */
|
|
62
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_NAME:
|
|
63
|
+
return "buffer_type_get_name";
|
|
64
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALIGNMENT:
|
|
65
|
+
return "buffer_type_get_alignment";
|
|
66
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_MAX_SIZE:
|
|
67
|
+
return "buffer_type_get_max_size";
|
|
68
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST:
|
|
69
|
+
return "buffer_type_is_host";
|
|
70
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_ALLOC_BUFFER:
|
|
71
|
+
return "buffer_type_alloc_buffer";
|
|
72
|
+
case APIR_COMMAND_TYPE_BUFFER_TYPE_GET_ALLOC_SIZE:
|
|
73
|
+
return "buffer_type_get_alloc_size";
|
|
74
|
+
/* buffer */
|
|
75
|
+
case APIR_COMMAND_TYPE_BUFFER_GET_BASE:
|
|
76
|
+
return "buffer_get_base";
|
|
77
|
+
case APIR_COMMAND_TYPE_BUFFER_SET_TENSOR:
|
|
78
|
+
return "buffer_set_tensor";
|
|
79
|
+
case APIR_COMMAND_TYPE_BUFFER_GET_TENSOR:
|
|
80
|
+
return "buffer_get_tensor";
|
|
81
|
+
case APIR_COMMAND_TYPE_BUFFER_CPY_TENSOR:
|
|
82
|
+
return "buffer_cpy_tensor";
|
|
83
|
+
case APIR_COMMAND_TYPE_BUFFER_CLEAR:
|
|
84
|
+
return "buffer_clear";
|
|
85
|
+
case APIR_COMMAND_TYPE_BUFFER_FREE_BUFFER:
|
|
86
|
+
return "buffer_free_buffer";
|
|
87
|
+
/* backend */
|
|
88
|
+
case APIR_COMMAND_TYPE_BACKEND_GRAPH_COMPUTE:
|
|
89
|
+
return "backend_graph_compute";
|
|
90
|
+
|
|
91
|
+
default:
|
|
92
|
+
return "unknown";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "apir_backend.gen.h"
|
|
4
|
+
|
|
5
|
+
#include <stdint.h> // for uintptr_t
|
|
6
|
+
#include <time.h> // for timespec, clock_gettime
|
|
7
|
+
|
|
8
|
+
#define APIR_BACKEND_INITIALIZE_SUCCESS 0
|
|
9
|
+
#define APIR_BACKEND_INITIALIZE_CANNOT_OPEN_BACKEND_LIBRARY 1
|
|
10
|
+
#define APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY 2
|
|
11
|
+
#define APIR_BACKEND_INITIALIZE_MISSING_BACKEND_SYMBOLS 3
|
|
12
|
+
#define APIR_BACKEND_INITIALIZE_MISSING_GGML_SYMBOLS 4
|
|
13
|
+
#define APIR_BACKEND_INITIALIZE_BACKEND_FAILED 5
|
|
14
|
+
#define APIR_BACKEND_INITIALIZE_BACKEND_REG_FAILED 6
|
|
15
|
+
#define APIR_BACKEND_INITIALIZE_ALREADY_INITED 7
|
|
16
|
+
#define APIR_BACKEND_INITIALIZE_NO_DEVICE 8
|
|
17
|
+
#define APIR_BACKEND_INITIALIZE_BACKEND_INIT_FAILED 9
|
|
18
|
+
|
|
19
|
+
// new entries here need to be added to the apir_backend_initialize_error function below
|
|
20
|
+
|
|
21
|
+
#define APIR_BACKEND_FORWARD_INDEX_INVALID 6
|
|
22
|
+
|
|
23
|
+
// 0 is fast, 1 avoids the backend to crash if an unsupported tensor is received
|
|
24
|
+
#define APIR_BACKEND_CHECK_SUPPORTS_OP 0
|
|
25
|
+
|
|
26
|
+
typedef uintptr_t apir_buffer_type_host_handle_t;
|
|
27
|
+
typedef uintptr_t apir_buffer_host_handle_t;
|
|
28
|
+
|
|
29
|
+
static const char * apir_backend_initialize_error(int code) {
|
|
30
|
+
#define APIR_BACKEND_INITIALIZE_ERROR(code_name) \
|
|
31
|
+
do { \
|
|
32
|
+
if (code == code_name) \
|
|
33
|
+
return #code_name; \
|
|
34
|
+
} while (0)
|
|
35
|
+
|
|
36
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_SUCCESS);
|
|
37
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_CANNOT_OPEN_BACKEND_LIBRARY);
|
|
38
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_CANNOT_OPEN_GGML_LIBRARY);
|
|
39
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_MISSING_BACKEND_SYMBOLS);
|
|
40
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_MISSING_GGML_SYMBOLS);
|
|
41
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_BACKEND_FAILED);
|
|
42
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_BACKEND_REG_FAILED);
|
|
43
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_ALREADY_INITED);
|
|
44
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_NO_DEVICE);
|
|
45
|
+
APIR_BACKEND_INITIALIZE_ERROR(APIR_BACKEND_INITIALIZE_BACKEND_INIT_FAILED);
|
|
46
|
+
|
|
47
|
+
return "Unknown APIR_BACKEND_INITIALIZE error:/";
|
|
48
|
+
|
|
49
|
+
#undef APIR_BACKEND_INITIALIZE_ERROR
|
|
50
|
+
}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "ggml-impl.h"
|
|
4
|
+
|
|
5
|
+
#include <cassert>
|
|
6
|
+
#include <cstring>
|
|
7
|
+
|
|
8
|
+
#define likely(x) __builtin_expect(!!(x), 1)
|
|
9
|
+
#define unlikely(x) __builtin_expect(!!(x), 0)
|
|
10
|
+
|
|
11
|
+
struct apir_encoder {
|
|
12
|
+
char * cur;
|
|
13
|
+
const char * start;
|
|
14
|
+
const char * end;
|
|
15
|
+
bool fatal;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
struct apir_decoder {
|
|
19
|
+
const char * cur;
|
|
20
|
+
const char * end;
|
|
21
|
+
bool fatal;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* new encoder and decoder
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
static apir_decoder apir_new_decoder(const char * ptr, size_t size) {
|
|
29
|
+
apir_decoder dec = {
|
|
30
|
+
.cur = ptr,
|
|
31
|
+
.end = ptr + size,
|
|
32
|
+
.fatal = false,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return dec;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static apir_encoder apir_new_encoder(char * ptr, size_t size) {
|
|
39
|
+
apir_encoder enc = {
|
|
40
|
+
.cur = ptr,
|
|
41
|
+
.start = ptr,
|
|
42
|
+
.end = ptr + size,
|
|
43
|
+
.fatal = false,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return enc;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* fatal flag handling
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
static inline void apir_encoder_reset_fatal(apir_encoder * enc) {
|
|
54
|
+
enc->fatal = false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static inline void apir_encoder_set_fatal(apir_encoder * enc) {
|
|
58
|
+
enc->fatal = true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static inline bool apir_encoder_get_fatal(const apir_encoder * enc) {
|
|
62
|
+
return enc->fatal;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static inline void apir_decoder_reset_fatal(apir_decoder * dec) {
|
|
66
|
+
dec->fatal = false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static inline void apir_decoder_set_fatal(apir_decoder * dec) {
|
|
70
|
+
dec->fatal = true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static inline bool apir_decoder_get_fatal(const apir_decoder * dec) {
|
|
74
|
+
return dec->fatal;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* encode peek
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
static inline bool apir_decoder_peek_internal(apir_decoder * dec, size_t size, void * val, size_t val_size) {
|
|
82
|
+
assert(val_size <= size);
|
|
83
|
+
|
|
84
|
+
if (unlikely(size > (size_t) (dec->end - dec->cur))) {
|
|
85
|
+
GGML_LOG_ERROR("%s: reading too much from the decoder ...\n", __func__);
|
|
86
|
+
apir_decoder_set_fatal(dec);
|
|
87
|
+
memset(val, 0, val_size);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* we should not rely on the compiler to optimize away memcpy... */
|
|
92
|
+
memcpy(val, dec->cur, val_size);
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static inline void apir_decoder_peek(apir_decoder * dec, size_t size, void * val, size_t val_size) {
|
|
97
|
+
apir_decoder_peek_internal(dec, size, val, val_size);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static inline const void * apir_decoder_use_inplace(apir_decoder * dec, size_t size) {
|
|
101
|
+
if (unlikely(size > (size_t) (dec->end - dec->cur))) {
|
|
102
|
+
GGML_LOG_ERROR("%s: reading too much from the decoder ...\n", __func__);
|
|
103
|
+
apir_decoder_set_fatal(dec);
|
|
104
|
+
return NULL;
|
|
105
|
+
}
|
|
106
|
+
const void * addr = dec->cur;
|
|
107
|
+
dec->cur += size;
|
|
108
|
+
|
|
109
|
+
return addr;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/*
|
|
113
|
+
* read/write
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
static inline void apir_decoder_read(apir_decoder * dec, size_t size, void * val, size_t val_size) {
|
|
117
|
+
if (apir_decoder_peek_internal(dec, size, val, val_size)) {
|
|
118
|
+
dec->cur += size;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static inline char * apir_encoder_write(apir_encoder * enc, size_t size, const void * val, size_t val_size) {
|
|
123
|
+
assert(val_size <= size);
|
|
124
|
+
assert(size <= ((size_t) (enc->end - enc->cur)));
|
|
125
|
+
|
|
126
|
+
char * write_addr = enc->cur;
|
|
127
|
+
/* we should not rely on the compiler to optimize away memcpy... */
|
|
128
|
+
memcpy(write_addr, val, val_size);
|
|
129
|
+
enc->cur += size;
|
|
130
|
+
|
|
131
|
+
return write_addr;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* encode/decode
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
static inline void apir_decode(apir_decoder * dec, size_t size, void * data, size_t data_size) {
|
|
139
|
+
assert(size % 4 == 0);
|
|
140
|
+
apir_decoder_read(dec, size, data, data_size);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static inline void apir_encode(apir_encoder * enc, size_t size, const void * data, size_t data_size) {
|
|
144
|
+
assert(size % 4 == 0);
|
|
145
|
+
apir_encoder_write(enc, size, data, data_size);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/*
|
|
149
|
+
* typed encode/decode
|
|
150
|
+
*/
|
|
151
|
+
|
|
152
|
+
/* uint8_t */
|
|
153
|
+
|
|
154
|
+
static inline void apir_encode_uint8_t(apir_encoder * enc, const uint8_t * val) {
|
|
155
|
+
apir_encode(enc, sizeof(int), val, sizeof(*val));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static inline void apir_decode_uint8_t(apir_decoder * dec, uint8_t * val) {
|
|
159
|
+
apir_decode(dec, sizeof(int), val, sizeof(*val));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* uint64_t */
|
|
163
|
+
|
|
164
|
+
static inline void apir_encode_uint64_t(apir_encoder * enc, const uint64_t * val) {
|
|
165
|
+
apir_encode(enc, 8, val, sizeof(*val));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
static inline void apir_decode_uint64_t(apir_decoder * dec, uint64_t * val) {
|
|
169
|
+
apir_decode(dec, 8, val, sizeof(*val));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
static inline void apir_encode_uint64_t_array(apir_encoder * enc, const uint64_t * val, uint32_t count) {
|
|
173
|
+
const size_t size = sizeof(*val) * count;
|
|
174
|
+
assert(size >= count);
|
|
175
|
+
apir_encode(enc, size, val, size);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static inline void apir_decode_uint64_t_array(apir_decoder * dec, uint64_t * val, uint32_t count) {
|
|
179
|
+
const size_t size = sizeof(*val) * count;
|
|
180
|
+
assert(size >= count);
|
|
181
|
+
apir_decode(dec, size, val, size);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
static inline const uint64_t * apir_decode_uint64_t_array_inplace(apir_decoder * dec, uint32_t count) {
|
|
185
|
+
return (uint64_t *) (uintptr_t) apir_decoder_use_inplace(dec, count * sizeof(uint64_t));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* int32_t */
|
|
189
|
+
|
|
190
|
+
static inline void apir_encode_int32_t(apir_encoder * enc, const int32_t * val) {
|
|
191
|
+
apir_encode(enc, 4, val, sizeof(*val));
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
static inline void apir_decode_int32_t(apir_decoder * dec, int32_t * val) {
|
|
195
|
+
apir_decode(dec, 4, val, sizeof(*val));
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
static inline void apir_encode_int32_t_array(apir_encoder * enc, const int32_t * val, uint32_t count) {
|
|
199
|
+
const size_t size = sizeof(*val) * count;
|
|
200
|
+
assert(size >= count);
|
|
201
|
+
apir_encode(enc, size, val, size);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
static inline void apir_decode_int32_t_array(apir_decoder * dec, int32_t * val, uint32_t count) {
|
|
205
|
+
const size_t size = sizeof(*val) * count;
|
|
206
|
+
assert(size >= count);
|
|
207
|
+
apir_decode(dec, size, val, size);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* array size (uint64_t) */
|
|
211
|
+
|
|
212
|
+
static inline void apir_encode_array_size(apir_encoder * enc, uint64_t size) {
|
|
213
|
+
apir_encode_uint64_t(enc, &size);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
static inline uint64_t apir_decode_array_size(apir_decoder * dec, uint64_t expected_size) {
|
|
217
|
+
uint64_t size;
|
|
218
|
+
apir_decode_uint64_t(dec, &size);
|
|
219
|
+
if (size != expected_size) {
|
|
220
|
+
GGML_LOG_ERROR("%s: Couldn't decode array from the decoder\n", __func__);
|
|
221
|
+
apir_decoder_set_fatal(dec);
|
|
222
|
+
size = 0;
|
|
223
|
+
}
|
|
224
|
+
return size;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
static inline uint64_t apir_decode_array_size_unchecked(apir_decoder * dec) {
|
|
228
|
+
uint64_t size;
|
|
229
|
+
apir_decode_uint64_t(dec, &size);
|
|
230
|
+
return size;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* non-array pointer */
|
|
234
|
+
|
|
235
|
+
static inline bool apir_encode_simple_pointer(apir_encoder * enc, const void * val) {
|
|
236
|
+
apir_encode_array_size(enc, val ? 1 : 0);
|
|
237
|
+
return val;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
static inline bool apir_decode_simple_pointer(apir_decoder * dec) {
|
|
241
|
+
return apir_decode_array_size_unchecked(dec);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* uint32_t */
|
|
245
|
+
|
|
246
|
+
static inline void apir_encode_uint32_t(apir_encoder * enc, const uint32_t * val) {
|
|
247
|
+
apir_encode(enc, 4, val, sizeof(*val));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
static inline void apir_decode_uint32_t(apir_decoder * dec, uint32_t * val) {
|
|
251
|
+
apir_decode(dec, 4, val, sizeof(*val));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
static inline void apir_encode_uint32_t_array(apir_encoder * enc, const uint32_t * val, uint32_t count) {
|
|
255
|
+
const size_t size = sizeof(*val) * count;
|
|
256
|
+
assert(size >= count);
|
|
257
|
+
apir_encode(enc, size, val, size);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
static inline void apir_decode_uint32_t_array(apir_decoder * dec, uint32_t * val, uint32_t count) {
|
|
261
|
+
const size_t size = sizeof(*val) * count;
|
|
262
|
+
assert(size >= count);
|
|
263
|
+
apir_decode(dec, size, val, size);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/* size_t */
|
|
267
|
+
|
|
268
|
+
static inline void apir_encode_size_t(apir_encoder * enc, const size_t * val) {
|
|
269
|
+
const uint64_t tmp = *val;
|
|
270
|
+
apir_encode_uint64_t(enc, &tmp);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
static inline void apir_decode_size_t(apir_decoder * dec, size_t * val) {
|
|
274
|
+
uint64_t tmp;
|
|
275
|
+
apir_decode_uint64_t(dec, &tmp);
|
|
276
|
+
*val = tmp;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
static inline void apir_encode_size_t_array(apir_encoder * enc, const size_t * val, uint32_t count) {
|
|
280
|
+
if (sizeof(size_t) == sizeof(uint64_t)) {
|
|
281
|
+
apir_encode_uint64_t_array(enc, (const uint64_t *) val, count);
|
|
282
|
+
} else {
|
|
283
|
+
for (uint32_t i = 0; i < count; i++) {
|
|
284
|
+
apir_encode_size_t(enc, &val[i]);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
static inline void apir_decode_size_t_array(apir_decoder * dec, size_t * val, uint32_t count) {
|
|
290
|
+
if (sizeof(size_t) == sizeof(uint64_t)) {
|
|
291
|
+
apir_decode_uint64_t_array(dec, (uint64_t *) val, count);
|
|
292
|
+
} else {
|
|
293
|
+
for (uint32_t i = 0; i < count; i++) {
|
|
294
|
+
apir_decode_size_t(dec, &val[i]);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/* opaque blob */
|
|
300
|
+
|
|
301
|
+
static inline void apir_encode_blob_array(apir_encoder * enc, const void * val, size_t size) {
|
|
302
|
+
apir_encode(enc, (size + 3) & ~3, val, size);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
static inline void apir_decode_blob_array(apir_decoder * dec, void * val, size_t size) {
|
|
306
|
+
apir_decode(dec, (size + 3) & ~3, val, size);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/* string */
|
|
310
|
+
|
|
311
|
+
static inline void apir_encode_char_array(apir_encoder * enc, const char * val, size_t size) {
|
|
312
|
+
assert(size && strlen(val) < size);
|
|
313
|
+
apir_encode_blob_array(enc, val, size);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
static inline void apir_decode_char_array(apir_decoder * dec, char * val, size_t size) {
|
|
317
|
+
apir_decode_blob_array(dec, val, size);
|
|
318
|
+
if (size) {
|
|
319
|
+
val[size - 1] = '\0';
|
|
320
|
+
} else {
|
|
321
|
+
GGML_LOG_ERROR("%s: Couldn't decode the blog array\n", __func__);
|
|
322
|
+
apir_decoder_set_fatal(dec);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* (temp) buffer allocation */
|
|
327
|
+
|
|
328
|
+
static inline void * apir_decoder_alloc_array(size_t size, size_t count) {
|
|
329
|
+
size_t alloc_size;
|
|
330
|
+
if (unlikely(__builtin_mul_overflow(size, count, &alloc_size))) {
|
|
331
|
+
GGML_LOG_ERROR("%s: overflow in array allocation of %zu * %zu bytes\n", __func__, size, count);
|
|
332
|
+
return NULL;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return malloc(alloc_size);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* bool */
|
|
339
|
+
|
|
340
|
+
static inline void apir_encode_bool_t(apir_encoder * enc, const bool * val) {
|
|
341
|
+
apir_encode(enc, sizeof(int), val, sizeof(bool));
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
static inline void apir_decode_bool_t(apir_decoder * dec, bool * val) {
|
|
345
|
+
apir_decode(dec, sizeof(int), val, sizeof(bool));
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/* apir_buffer_type_host_handle_t */
|
|
349
|
+
|
|
350
|
+
static inline void apir_encode_apir_buffer_type_host_handle_t(apir_encoder * enc,
|
|
351
|
+
const apir_buffer_type_host_handle_t * val) {
|
|
352
|
+
apir_encode(enc, sizeof(apir_buffer_type_host_handle_t), val, sizeof(apir_buffer_type_host_handle_t));
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
static inline void apir_decode_apir_buffer_type_host_handle_t(apir_decoder * dec,
|
|
356
|
+
apir_buffer_type_host_handle_t * val) {
|
|
357
|
+
apir_decode(dec, sizeof(apir_buffer_type_host_handle_t), val, sizeof(apir_buffer_type_host_handle_t));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* apir_buffer_host_handle_t */
|
|
361
|
+
|
|
362
|
+
static inline void apir_encode_apir_buffer_host_handle_t(apir_encoder * enc, const apir_buffer_host_handle_t * val) {
|
|
363
|
+
apir_encode(enc, sizeof(apir_buffer_host_handle_t), val, sizeof(apir_buffer_host_handle_t));
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
static inline void apir_decode_apir_buffer_host_handle_t(apir_decoder * dec, apir_buffer_host_handle_t * val) {
|
|
367
|
+
apir_decode(dec, sizeof(apir_buffer_host_handle_t), val, sizeof(apir_buffer_host_handle_t));
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* uintptr_t */
|
|
371
|
+
|
|
372
|
+
static inline void apir_encode_uintptr_t(apir_encoder * enc, const uintptr_t * val) {
|
|
373
|
+
apir_encode(enc, sizeof(*val), val, sizeof(*val));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
static inline void apir_decode_uintptr_t(apir_decoder * dec, uintptr_t * val) {
|
|
377
|
+
apir_decode(dec, sizeof(*val), val, sizeof(*val));
|
|
378
|
+
}
|