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,190 @@
|
|
|
1
|
+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
|
2
|
+
|
|
3
|
+
//------------------------------------------------------------------------------
|
|
4
|
+
// add
|
|
5
|
+
//------------------------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
// general-purpose kernel for addition of two tensors
|
|
8
|
+
// pros: works for non-contiguous tensors, supports broadcast across dims 1, 2 and 3
|
|
9
|
+
// cons: not very efficient
|
|
10
|
+
kernel void kernel_add(
|
|
11
|
+
global char * src0,
|
|
12
|
+
ulong offset0,
|
|
13
|
+
global char * src1,
|
|
14
|
+
ulong offset1,
|
|
15
|
+
global char * dst,
|
|
16
|
+
ulong offsetd,
|
|
17
|
+
int ne00,
|
|
18
|
+
int ne01,
|
|
19
|
+
int ne02,
|
|
20
|
+
int ne03,
|
|
21
|
+
ulong nb00,
|
|
22
|
+
ulong nb01,
|
|
23
|
+
ulong nb02,
|
|
24
|
+
ulong nb03,
|
|
25
|
+
int ne10,
|
|
26
|
+
int ne11,
|
|
27
|
+
int ne12,
|
|
28
|
+
int ne13,
|
|
29
|
+
ulong nb10,
|
|
30
|
+
ulong nb11,
|
|
31
|
+
ulong nb12,
|
|
32
|
+
ulong nb13,
|
|
33
|
+
int ne0,
|
|
34
|
+
int ne1,
|
|
35
|
+
int ne2,
|
|
36
|
+
int ne3,
|
|
37
|
+
ulong nb0,
|
|
38
|
+
ulong nb1,
|
|
39
|
+
ulong nb2,
|
|
40
|
+
ulong nb3
|
|
41
|
+
) {
|
|
42
|
+
src0 = src0 + offset0;
|
|
43
|
+
src1 = src1 + offset1;
|
|
44
|
+
dst = dst + offsetd;
|
|
45
|
+
|
|
46
|
+
int i03 = get_group_id(2);
|
|
47
|
+
int i02 = get_group_id(1);
|
|
48
|
+
int i01 = get_group_id(0);
|
|
49
|
+
|
|
50
|
+
int i13 = i03 % ne13;
|
|
51
|
+
int i12 = i02 % ne12;
|
|
52
|
+
int i11 = i01 % ne11;
|
|
53
|
+
|
|
54
|
+
global char * src0_ptr = src0 + i03*nb03 + i02*nb02 + i01*nb01;
|
|
55
|
+
global char * src1_ptr = src1 + i13*nb13 + i12*nb12 + i11*nb11;
|
|
56
|
+
global char * dst_ptr = dst + i03*nb3 + i02*nb2 + i01*nb1;
|
|
57
|
+
|
|
58
|
+
for (int i0 = get_local_id(0); i0 < ne0; i0 += get_local_size(0)) {
|
|
59
|
+
const int i10 = i0 % ne10;
|
|
60
|
+
*((global float *)(dst_ptr + i0*nb0)) = *((global float *)(src0_ptr + i0*nb00)) + *((global float *)(src1_ptr + i10*nb10));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// assumption: src1 is a row
|
|
65
|
+
// broadcast src1 into src0
|
|
66
|
+
kernel void kernel_add_row(
|
|
67
|
+
global float4 * src0,
|
|
68
|
+
ulong offset0,
|
|
69
|
+
global float4 * src1,
|
|
70
|
+
ulong offset1,
|
|
71
|
+
global float4 * dst,
|
|
72
|
+
ulong offsetd,
|
|
73
|
+
int ne
|
|
74
|
+
) {
|
|
75
|
+
src0 = (global float4*)((global char*)src0 + offset0);
|
|
76
|
+
src1 = (global float4*)((global char*)src1 + offset1);
|
|
77
|
+
dst = (global float4*)((global char*)dst + offsetd);
|
|
78
|
+
|
|
79
|
+
// This performs better than using %.
|
|
80
|
+
uint gid = get_global_id(0);
|
|
81
|
+
uint idx1 = gid - (gid/ne)*ne; // get_global_id(0) % ne
|
|
82
|
+
dst[gid] = src0[gid] + src1[idx1];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
kernel void kernel_add_f16(
|
|
86
|
+
global char * src0,
|
|
87
|
+
ulong offset0,
|
|
88
|
+
global char * src1,
|
|
89
|
+
ulong offset1,
|
|
90
|
+
global char * dst,
|
|
91
|
+
ulong offsetd,
|
|
92
|
+
int ne00,
|
|
93
|
+
int ne01,
|
|
94
|
+
int ne02,
|
|
95
|
+
int ne03,
|
|
96
|
+
ulong nb00,
|
|
97
|
+
ulong nb01,
|
|
98
|
+
ulong nb02,
|
|
99
|
+
ulong nb03,
|
|
100
|
+
int ne10,
|
|
101
|
+
int ne11,
|
|
102
|
+
int ne12,
|
|
103
|
+
int ne13,
|
|
104
|
+
ulong nb10,
|
|
105
|
+
ulong nb11,
|
|
106
|
+
ulong nb12,
|
|
107
|
+
ulong nb13,
|
|
108
|
+
int ne0,
|
|
109
|
+
int ne1,
|
|
110
|
+
int ne2,
|
|
111
|
+
int ne3,
|
|
112
|
+
ulong nb0,
|
|
113
|
+
ulong nb1,
|
|
114
|
+
ulong nb2,
|
|
115
|
+
ulong nb3,
|
|
116
|
+
int type_src0,
|
|
117
|
+
int type_src1
|
|
118
|
+
) {
|
|
119
|
+
src0 = src0 + offset0;
|
|
120
|
+
src1 = src1 + offset1;
|
|
121
|
+
dst = dst + offsetd;
|
|
122
|
+
|
|
123
|
+
int i03 = get_group_id(2);
|
|
124
|
+
int i02 = get_group_id(1);
|
|
125
|
+
int i01 = get_group_id(0);
|
|
126
|
+
|
|
127
|
+
int i13 = i03 % ne13;
|
|
128
|
+
int i12 = i02 % ne12;
|
|
129
|
+
int i11 = i01 % ne11;
|
|
130
|
+
|
|
131
|
+
global char * src0_ptr = src0 + i03*nb03 + i02*nb02 + i01*nb01;
|
|
132
|
+
global char * src1_ptr = src1 + i13*nb13 + i12*nb12 + i11*nb11;
|
|
133
|
+
global char * dst_ptr = dst + i03*nb3 + i02*nb2 + i01*nb1;
|
|
134
|
+
|
|
135
|
+
for (int i0 = get_local_id(0); i0 < ne0; i0 += get_local_size(0)) {
|
|
136
|
+
const int i10 = i0 % ne10;
|
|
137
|
+
|
|
138
|
+
half v0, v1;
|
|
139
|
+
if (type_src0 == 1) {
|
|
140
|
+
v0 = convert_half(*((global float *)(src0_ptr + i0*nb00)));
|
|
141
|
+
} else {
|
|
142
|
+
v0 = *((global half *)(src0_ptr + i0*nb00));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (type_src1 == 1) {
|
|
146
|
+
v1 = convert_half(*((global float *)(src1_ptr + i10*nb10)));
|
|
147
|
+
} else {
|
|
148
|
+
v1 = *((global half *)(src1_ptr + i10*nb10));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
*((global half *)(dst_ptr + i0*nb0)) = v0 + v1;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
kernel void kernel_add_row_f16(
|
|
156
|
+
global char * src0,
|
|
157
|
+
ulong offset0,
|
|
158
|
+
global char * src1,
|
|
159
|
+
ulong offset1,
|
|
160
|
+
global half4 * dst,
|
|
161
|
+
ulong offsetd,
|
|
162
|
+
int ne,
|
|
163
|
+
int type_src0,
|
|
164
|
+
int type_src1
|
|
165
|
+
) {
|
|
166
|
+
dst = (global half4*)((global char*)dst + offsetd);
|
|
167
|
+
|
|
168
|
+
// This performs better than using %.
|
|
169
|
+
uint gid = get_global_id(0);
|
|
170
|
+
uint idx1 = gid - (gid/ne)*ne; // get_global_id(0) % ne
|
|
171
|
+
|
|
172
|
+
half4 v0, v1;
|
|
173
|
+
if (type_src0 == 1) {
|
|
174
|
+
global float4* src0_f32 = (global float4*)((global char*)src0 + offset0);
|
|
175
|
+
v0 = convert_half4(src0_f32[gid]);
|
|
176
|
+
} else {
|
|
177
|
+
global half4* src0_f16 = (global half4*)((global char*)src0 + offset0);
|
|
178
|
+
v0 = src0_f16[gid];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (type_src1 == 1) {
|
|
182
|
+
global float4* src1_f32 = (global float4*)((global char*)src1 + offset1);
|
|
183
|
+
v1 = convert_half4(src1_f32[idx1]);
|
|
184
|
+
} else {
|
|
185
|
+
global half4* src1_f16 = (global half4*)((global char*)src1 + offset1);
|
|
186
|
+
v1 = src1_f16[idx1];
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
dst[gid] = v0 + v1;
|
|
190
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
|
2
|
+
|
|
3
|
+
//------------------------------------------------------------------------------
|
|
4
|
+
// add_id
|
|
5
|
+
//------------------------------------------------------------------------------
|
|
6
|
+
kernel void kernel_add_id(
|
|
7
|
+
global char * src0,
|
|
8
|
+
ulong offset0,
|
|
9
|
+
global char * src1,
|
|
10
|
+
ulong offset1,
|
|
11
|
+
global char * src2,
|
|
12
|
+
ulong offset2,
|
|
13
|
+
global char * dst,
|
|
14
|
+
ulong offsetd,
|
|
15
|
+
ulong nb01,
|
|
16
|
+
ulong nb02,
|
|
17
|
+
ulong nb11,
|
|
18
|
+
ulong nb21,
|
|
19
|
+
int ne0,
|
|
20
|
+
int ne1
|
|
21
|
+
) {
|
|
22
|
+
src0 = (global char*)((global char*)src0 + offset0);
|
|
23
|
+
src1 = (global char*)((global char*)src1 + offset1);
|
|
24
|
+
src2 = (global char*)((global char*)src2 + offset2);
|
|
25
|
+
dst = (global char*)((global char*)dst + offsetd);
|
|
26
|
+
|
|
27
|
+
int i1 = get_group_id(0);
|
|
28
|
+
int i2 = get_group_id(1);
|
|
29
|
+
|
|
30
|
+
const int i11 = *((global const int *) (src2 + i1*sizeof(int) + i2*nb21));
|
|
31
|
+
|
|
32
|
+
const size_t nb1 = ne0 * sizeof(float);
|
|
33
|
+
const size_t nb2 = ne1 * nb1;
|
|
34
|
+
|
|
35
|
+
global float * dst_row = (global float *)((global char *)dst + i1*nb1 + i2*nb2);
|
|
36
|
+
global float * src0_row = (global float *)((global char *)src0 + i1*nb01 + i2*nb02);
|
|
37
|
+
global float * src1_row = (global float *)((global char *)src1 + i11*nb11);
|
|
38
|
+
|
|
39
|
+
for (int i0 = get_local_id(0); i0 < ne0; i0 += get_local_size(0)) {
|
|
40
|
+
dst_row[i0] = src0_row[i0] + src1_row[i0];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
|
2
|
+
|
|
3
|
+
#ifdef cl_intel_subgroups
|
|
4
|
+
#pragma OPENCL EXTENSION cl_intel_subgroups : enable
|
|
5
|
+
#else
|
|
6
|
+
#pragma OPENCL EXTENSION cl_khr_subgroups : enable
|
|
7
|
+
#endif
|
|
8
|
+
|
|
9
|
+
#ifdef cl_intel_required_subgroup_size
|
|
10
|
+
#pragma OPENCL EXTENSION cl_intel_required_subgroup_size : enable
|
|
11
|
+
#define INTEL_GPU 1
|
|
12
|
+
#define REQD_SUBGROUP_SIZE_16 __attribute__((intel_reqd_sub_group_size(16)))
|
|
13
|
+
#define REQD_SUBGROUP_SIZE_32 __attribute__((intel_reqd_sub_group_size(32)))
|
|
14
|
+
#elif defined(cl_qcom_reqd_sub_group_size)
|
|
15
|
+
#pragma OPENCL EXTENSION cl_qcom_reqd_sub_group_size : enable
|
|
16
|
+
#define ADRENO_GPU 1
|
|
17
|
+
#define REQD_SUBGROUP_SIZE_64 __attribute__((qcom_reqd_sub_group_size("half")))
|
|
18
|
+
#define REQD_SUBGROUP_SIZE_128 __attribute__((qcom_reqd_sub_group_size("full")))
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#define SWAP(x, y, T) { T tmp = (x); (x) = (y); (y) = tmp; }
|
|
22
|
+
|
|
23
|
+
enum ggml_sort_order {
|
|
24
|
+
GGML_SORT_ORDER_ASC,
|
|
25
|
+
GGML_SORT_ORDER_DESC,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
kernel void kernel_argsort_f32_i32(
|
|
29
|
+
global float * src0,
|
|
30
|
+
ulong offset0,
|
|
31
|
+
global int * dst,
|
|
32
|
+
ulong offsetd,
|
|
33
|
+
const int ne00,
|
|
34
|
+
const int ne00_pad,
|
|
35
|
+
const int order,
|
|
36
|
+
local int * dst_row
|
|
37
|
+
) {
|
|
38
|
+
// bitonic sort
|
|
39
|
+
int col = get_local_id(0);
|
|
40
|
+
int row = get_group_id(1);
|
|
41
|
+
|
|
42
|
+
if (col >= ne00_pad) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
src0 = (global char *)((global char *)src0 + offset0);
|
|
47
|
+
dst = (global float *)((global char *)dst + offsetd);
|
|
48
|
+
|
|
49
|
+
global float * x_row = src0 + row * ne00;
|
|
50
|
+
|
|
51
|
+
// initialize indices
|
|
52
|
+
dst_row[col] = col;
|
|
53
|
+
|
|
54
|
+
barrier(CLK_LOCAL_MEM_FENCE);
|
|
55
|
+
|
|
56
|
+
for (int k = 2; k <= ne00_pad; k *= 2) {
|
|
57
|
+
for (int j = k / 2; j > 0; j /= 2) {
|
|
58
|
+
int ixj = col ^ j;
|
|
59
|
+
if (ixj > col) {
|
|
60
|
+
if ((col & k) == 0) {
|
|
61
|
+
if (dst_row[col] >= ne00 ||
|
|
62
|
+
(dst_row[ixj] < ne00 && (order == GGML_SORT_ORDER_ASC ?
|
|
63
|
+
x_row[dst_row[col]] > x_row[dst_row[ixj]] :
|
|
64
|
+
x_row[dst_row[col]] < x_row[dst_row[ixj]]))
|
|
65
|
+
) {
|
|
66
|
+
SWAP(dst_row[col], dst_row[ixj], int);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
if (dst_row[ixj] >= ne00 ||
|
|
70
|
+
(dst_row[col] < ne00 && (order == GGML_SORT_ORDER_ASC ?
|
|
71
|
+
x_row[dst_row[col]] < x_row[dst_row[ixj]] :
|
|
72
|
+
x_row[dst_row[col]] > x_row[dst_row[ixj]]))
|
|
73
|
+
) {
|
|
74
|
+
SWAP(dst_row[col], dst_row[ixj], int);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
barrier(CLK_LOCAL_MEM_FENCE);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// copy the result to dst without the padding
|
|
83
|
+
if (col < ne00) {
|
|
84
|
+
dst[row * ne00 + col] = dst_row[col];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
|
2
|
+
|
|
3
|
+
//------------------------------------------------------------------------------
|
|
4
|
+
// clamp
|
|
5
|
+
//------------------------------------------------------------------------------
|
|
6
|
+
kernel void kernel_clamp(
|
|
7
|
+
global float * src0,
|
|
8
|
+
ulong offset0,
|
|
9
|
+
global float * dst,
|
|
10
|
+
ulong offsetd,
|
|
11
|
+
float min,
|
|
12
|
+
float max
|
|
13
|
+
) {
|
|
14
|
+
src0 = (global float*)((global char*)src0 + offset0);
|
|
15
|
+
dst = (global float*)((global char*)dst + offsetd);
|
|
16
|
+
|
|
17
|
+
dst[get_global_id(0)] = src0[get_global_id(0)] < min ?
|
|
18
|
+
min :
|
|
19
|
+
(src0[get_global_id(0)] > max ? max : src0[get_global_id(0)]);
|
|
20
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
kernel void kernel_concat_f32(
|
|
2
|
+
global const char * src0,
|
|
3
|
+
ulong offset0,
|
|
4
|
+
global const char * src1,
|
|
5
|
+
ulong offset1,
|
|
6
|
+
global char * dst,
|
|
7
|
+
ulong offsetd,
|
|
8
|
+
int ne00,
|
|
9
|
+
int ne01,
|
|
10
|
+
int ne02,
|
|
11
|
+
int ne03,
|
|
12
|
+
ulong nb00,
|
|
13
|
+
ulong nb01,
|
|
14
|
+
ulong nb02,
|
|
15
|
+
ulong nb03,
|
|
16
|
+
ulong nb10,
|
|
17
|
+
ulong nb11,
|
|
18
|
+
ulong nb12,
|
|
19
|
+
ulong nb13,
|
|
20
|
+
int ne0,
|
|
21
|
+
ulong nb0,
|
|
22
|
+
ulong nb1,
|
|
23
|
+
ulong nb2,
|
|
24
|
+
ulong nb3,
|
|
25
|
+
int dim
|
|
26
|
+
) {
|
|
27
|
+
src0 = src0 + offset0;
|
|
28
|
+
src1 = src1 + offset1;
|
|
29
|
+
dst = dst + offsetd;
|
|
30
|
+
|
|
31
|
+
const int i3 = get_group_id(2);
|
|
32
|
+
const int i2 = get_group_id(1);
|
|
33
|
+
const int i1 = get_group_id(0);
|
|
34
|
+
|
|
35
|
+
int o[4] = {0, 0, 0, 0};
|
|
36
|
+
o[dim] = dim == 0 ? ne00 : (dim == 1 ? ne01 : (dim == 2 ? ne02 : ne03));
|
|
37
|
+
|
|
38
|
+
global const float * x;
|
|
39
|
+
|
|
40
|
+
for (int i0 = get_local_id(0); i0 < ne0; i0 += get_local_size(0)) {
|
|
41
|
+
if (i0 < ne00 && i1 < ne01 && i2 < ne02 && i3 < ne03) {
|
|
42
|
+
x = (global const float *)(src0 + (i3 )*nb03 + (i2 )*nb02 + (i1 )*nb01 + (i0 )*nb00);
|
|
43
|
+
} else {
|
|
44
|
+
x = (global const float *)(src1 + (i3 - o[3])*nb13 + (i2 - o[2])*nb12 + (i1 - o[1])*nb11 + (i0 - o[0])*nb10);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
global float * y = (global float *)(dst + i3*nb3 + i2*nb2 + i1*nb1 + i0*nb0);
|
|
48
|
+
|
|
49
|
+
*y = *x;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
#ifdef USE_FP16
|
|
2
|
+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
|
3
|
+
#define T_FLOAT half
|
|
4
|
+
#define T_FLOAT4 half4
|
|
5
|
+
#define VSTORE_T_FLOAT4(data, offset, p) vstore_half4_rte(data, offset, p)
|
|
6
|
+
#else
|
|
7
|
+
#define T_FLOAT float
|
|
8
|
+
#define T_FLOAT4 float4
|
|
9
|
+
#define VSTORE_T_FLOAT4(data, offset, p) vstore4(data, offset, p)
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
#if defined(cl_qcom_reqd_sub_group_size)
|
|
13
|
+
#pragma OPENCL EXTENSION cl_qcom_reqd_sub_group_size : enable
|
|
14
|
+
#define REQD_SUBGROUP_SIZE_128 __attribute__((qcom_reqd_sub_group_size("full")))
|
|
15
|
+
#else
|
|
16
|
+
#define REQD_SUBGROUP_SIZE_128
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
#define T_ACCUM float4
|
|
20
|
+
#define VEC_SIZE 4
|
|
21
|
+
|
|
22
|
+
#define BS_K 64
|
|
23
|
+
#define BS_NPQ 64
|
|
24
|
+
#define BS_CRS 16
|
|
25
|
+
|
|
26
|
+
#define TS_K 4
|
|
27
|
+
#define TS_NPQ 8
|
|
28
|
+
|
|
29
|
+
#define WG_K (BS_K / TS_K)
|
|
30
|
+
#define WG_NPQ (BS_NPQ / TS_NPQ)
|
|
31
|
+
|
|
32
|
+
#define BS_NPQ_VEC (BS_NPQ / VEC_SIZE)
|
|
33
|
+
#define TS_NPQ_VEC (TS_NPQ / VEC_SIZE)
|
|
34
|
+
|
|
35
|
+
static inline uint splitWork(uint work_size, uint block_size){
|
|
36
|
+
return (work_size + block_size - 1) / block_size;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
REQD_SUBGROUP_SIZE_128
|
|
40
|
+
kernel void kernel_conv_2d(
|
|
41
|
+
global void* p_knl,
|
|
42
|
+
ulong off_knl,
|
|
43
|
+
global void* p_src,
|
|
44
|
+
ulong off_src,
|
|
45
|
+
global void* p_dst,
|
|
46
|
+
ulong off_dst,
|
|
47
|
+
local void* shared,
|
|
48
|
+
uint Cout, uint Cin, uint N,
|
|
49
|
+
uint KW, uint KH, uint W, uint H, uint OW, uint OH,
|
|
50
|
+
uint s0, uint s1, uint p0, uint p1, uint d0, uint d1,
|
|
51
|
+
uint nb01, uint nb02, uint nb03,
|
|
52
|
+
uint nb11, uint nb12, uint nb13,
|
|
53
|
+
uint nb1, uint nb2, uint nb3
|
|
54
|
+
) {
|
|
55
|
+
global T_FLOAT* knl_data = (global T_FLOAT*) ((global char*)p_knl + off_knl);
|
|
56
|
+
global T_FLOAT* src_data = (global T_FLOAT*) ((global char*)p_src + off_src);
|
|
57
|
+
global T_FLOAT* dst_data = (global T_FLOAT*) ((global char*)p_dst + off_dst);
|
|
58
|
+
|
|
59
|
+
const uint K = Cout;
|
|
60
|
+
const uint CRS = Cin*KH*KW;
|
|
61
|
+
const uint NPQ = N*OH*OW;
|
|
62
|
+
|
|
63
|
+
const uint lid_k = get_local_id(0);
|
|
64
|
+
const uint lid_npq = get_local_id(1);
|
|
65
|
+
const uint tid = lid_npq * WG_K + lid_k;
|
|
66
|
+
|
|
67
|
+
const uint B_idx_K = get_group_id(0);
|
|
68
|
+
const uint B_idx_NPQ = get_group_id(1);
|
|
69
|
+
|
|
70
|
+
const uint offset_k = B_idx_K * BS_K;
|
|
71
|
+
const uint offset_npq = B_idx_NPQ * BS_NPQ;
|
|
72
|
+
|
|
73
|
+
local T_FLOAT* Ash = (local T_FLOAT*)shared;
|
|
74
|
+
local T_FLOAT4* Bsh = (local T_FLOAT4*) &Ash[BS_K * BS_CRS];
|
|
75
|
+
|
|
76
|
+
T_ACCUM regC[TS_K][TS_NPQ_VEC];
|
|
77
|
+
for (int i = 0; i < TS_K; ++i) {
|
|
78
|
+
for (int j = 0; j < TS_NPQ_VEC; ++j) {
|
|
79
|
+
regC[i][j] = (T_ACCUM)(0.0f);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const uint NB_CRS = splitWork(CRS, BS_CRS);
|
|
84
|
+
|
|
85
|
+
for (uint B_idx_CRS = 0; B_idx_CRS < NB_CRS; ++B_idx_CRS) {
|
|
86
|
+
const uint offset_crs = B_idx_CRS * BS_CRS;
|
|
87
|
+
|
|
88
|
+
for (int i = tid; i < BS_K * BS_CRS; i += (WG_K * WG_NPQ)) {
|
|
89
|
+
const uint k_l = i / BS_CRS;
|
|
90
|
+
const uint crs_l = i % BS_CRS;
|
|
91
|
+
const uint k_g = offset_k + k_l;
|
|
92
|
+
const uint crs_g = offset_crs + crs_l;
|
|
93
|
+
|
|
94
|
+
if (k_g < K && crs_g < CRS) {
|
|
95
|
+
const uint Cin_idx = crs_g / (KW*KH);
|
|
96
|
+
const uint KH_idx = (crs_g - Cin_idx*KW*KH) / KW;
|
|
97
|
+
const uint KW_idx = crs_g - Cin_idx*KW*KH - KH_idx*KW;
|
|
98
|
+
const uint knl_idx = KW_idx + KH_idx*nb01 + Cin_idx*nb02 + k_g*nb03;
|
|
99
|
+
Ash[k_l * BS_CRS + crs_l] = knl_data[knl_idx];
|
|
100
|
+
} else {
|
|
101
|
+
Ash[k_l * BS_CRS + crs_l] = (T_FLOAT)0.0f;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
for (int i = tid; i < BS_CRS * BS_NPQ_VEC; i += (WG_K * WG_NPQ)) {
|
|
106
|
+
const uint crs_l = i / BS_NPQ_VEC;
|
|
107
|
+
const uint npq_l_vec = i % BS_NPQ_VEC;
|
|
108
|
+
const uint crs_g = offset_crs + crs_l;
|
|
109
|
+
|
|
110
|
+
T_FLOAT4 val = (T_FLOAT4)(0.0f);
|
|
111
|
+
if (crs_g < CRS) {
|
|
112
|
+
const uint Cin_idx = crs_g / (KW * KH);
|
|
113
|
+
const uint KH_idx = (crs_g - Cin_idx * KW * KH) / KW;
|
|
114
|
+
const uint KW_idx = crs_g - Cin_idx * KW * KH - KH_idx * KW;
|
|
115
|
+
for (int v = 0; v < VEC_SIZE; ++v) {
|
|
116
|
+
const uint npq_g = offset_npq + npq_l_vec * VEC_SIZE + v;
|
|
117
|
+
if (npq_g < NPQ) {
|
|
118
|
+
const uint N_idx = npq_g / (OH * OW);
|
|
119
|
+
const uint pq_idx = npq_g % (OH * OW);
|
|
120
|
+
const uint OH_idx = pq_idx / OW;
|
|
121
|
+
const uint OW_idx = pq_idx % OW;
|
|
122
|
+
const int H_idx = (int)(OH_idx * s1 + KH_idx * d1 - p1);
|
|
123
|
+
const int W_idx = (int)(OW_idx * s0 + KW_idx * d0 - p0);
|
|
124
|
+
|
|
125
|
+
if (H_idx >= 0 && H_idx < H && W_idx >= 0 && W_idx < W) {
|
|
126
|
+
const uint src_idx = W_idx + H_idx * nb11 + Cin_idx * nb12 + N_idx * nb13;
|
|
127
|
+
((T_FLOAT*)&val)[v] = src_data[src_idx];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
Bsh[crs_l * BS_NPQ_VEC + npq_l_vec] = val;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
barrier(CLK_LOCAL_MEM_FENCE);
|
|
136
|
+
|
|
137
|
+
#pragma unroll
|
|
138
|
+
for (uint crs_l = 0; crs_l < BS_CRS; ++crs_l) {
|
|
139
|
+
T_FLOAT regA[TS_K];
|
|
140
|
+
for (uint k_l_reg = 0; k_l_reg < TS_K; ++k_l_reg) {
|
|
141
|
+
regA[k_l_reg] = Ash[(lid_k * TS_K + k_l_reg) * BS_CRS + crs_l];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
for (uint npq_l_vec_reg = 0; npq_l_vec_reg < TS_NPQ_VEC; ++npq_l_vec_reg) {
|
|
145
|
+
T_FLOAT4 regB = Bsh[crs_l * BS_NPQ_VEC + lid_npq * TS_NPQ_VEC + npq_l_vec_reg];
|
|
146
|
+
for (uint k_l_reg = 0; k_l_reg < TS_K; ++k_l_reg) {
|
|
147
|
+
regC[k_l_reg][npq_l_vec_reg] = mad(convert_float(regA[k_l_reg]), convert_float4(regB), regC[k_l_reg][npq_l_vec_reg]);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
barrier(CLK_LOCAL_MEM_FENCE);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
for (uint k_l_reg = 0; k_l_reg < TS_K; ++k_l_reg) {
|
|
155
|
+
const uint k_g = offset_k + lid_k * TS_K + k_l_reg;
|
|
156
|
+
if (k_g >= K) continue;
|
|
157
|
+
|
|
158
|
+
for (uint npq_l_vec_reg = 0; npq_l_vec_reg < TS_NPQ_VEC; ++npq_l_vec_reg) {
|
|
159
|
+
const uint npq_g_base = offset_npq + (lid_npq * TS_NPQ_VEC + npq_l_vec_reg) * VEC_SIZE;
|
|
160
|
+
|
|
161
|
+
const uint N_idx = npq_g_base / (OH * OW);
|
|
162
|
+
const uint pq_idx = npq_g_base % (OH * OW);
|
|
163
|
+
const uint OH_idx = pq_idx / OW;
|
|
164
|
+
const uint OW_idx = pq_idx % OW;
|
|
165
|
+
|
|
166
|
+
if (nb1 == OW && OW_idx + VEC_SIZE <= OW && npq_g_base + VEC_SIZE <= NPQ) {
|
|
167
|
+
const uint dst_idx = OW_idx + OH_idx*nb1 + k_g*nb2 + N_idx*nb3;
|
|
168
|
+
VSTORE_T_FLOAT4(regC[k_l_reg][npq_l_vec_reg], 0, &dst_data[dst_idx]);
|
|
169
|
+
} else {
|
|
170
|
+
T_ACCUM res = regC[k_l_reg][npq_l_vec_reg];
|
|
171
|
+
for (int v = 0; v < VEC_SIZE; ++v) {
|
|
172
|
+
const uint npq_g = npq_g_base + v;
|
|
173
|
+
if (npq_g < NPQ) {
|
|
174
|
+
const uint N_idx_s = npq_g / (OH*OW);
|
|
175
|
+
const uint pq_idx_s = npq_g % (OH*OW);
|
|
176
|
+
const uint OH_idx_s = pq_idx_s / OW;
|
|
177
|
+
const uint OW_idx_s = pq_idx_s % OW;
|
|
178
|
+
const uint dst_idx_s = OW_idx_s + OH_idx_s*nb1 + k_g*nb2 + N_idx_s*nb3;
|
|
179
|
+
dst_data[dst_idx_s] = (T_FLOAT)(((float*)&res)[v]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|