cohere-transcribe 0.1.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.
Files changed (480) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +21 -0
  3. data/LICENSE.txt +201 -0
  4. data/NOTICE +5 -0
  5. data/README.md +265 -0
  6. data/THIRD_PARTY_NOTICES.md +67 -0
  7. data/exe/cohere-transcribe +8 -0
  8. data/exe/cohere-transcribe-doctor +8 -0
  9. data/ext/cohere_transcribe_native/CMakeLists.txt +262 -0
  10. data/ext/cohere_transcribe_native/README.md +26 -0
  11. data/ext/cohere_transcribe_native/audio_abi.cpp +1416 -0
  12. data/ext/cohere_transcribe_native/audio_exports.macos +5 -0
  13. data/ext/cohere_transcribe_native/audio_exports.map +10 -0
  14. data/ext/cohere_transcribe_native/cohere_abi.cpp +1209 -0
  15. data/ext/cohere_transcribe_native/exports.macos +40 -0
  16. data/ext/cohere_transcribe_native/exports.map +45 -0
  17. data/ext/cohere_transcribe_native/extconf.rb +89 -0
  18. data/ext/cohere_transcribe_native/test/abi_smoke.rb +232 -0
  19. data/ext/cohere_transcribe_native/test/audio_matrix_smoke.cpp +121 -0
  20. data/ext/cohere_transcribe_native/test/audio_reliability_smoke.cpp +198 -0
  21. data/ext/cohere_transcribe_native/test/native_abi_reliability_smoke.cpp +186 -0
  22. data/ext/cohere_transcribe_native/test/native_batch_projection_probe.rb +81 -0
  23. data/ext/cohere_transcribe_native/test/native_cancellation_smoke.cpp +194 -0
  24. data/lib/cohere/transcribe/alignment/ATTRIBUTION.md +23 -0
  25. data/lib/cohere/transcribe/alignment/LICENSE.ctc-forced-aligner +407 -0
  26. data/lib/cohere/transcribe/alignment/LICENSE.torchaudio +25 -0
  27. data/lib/cohere/transcribe/alignment/LICENSE.uroman +26 -0
  28. data/lib/cohere/transcribe/alignment/aligner.rb +476 -0
  29. data/lib/cohere/transcribe/alignment/ctc.rb +224 -0
  30. data/lib/cohere/transcribe/alignment/text.rb +237 -0
  31. data/lib/cohere/transcribe/alignment/uroman_data.rb +4950 -0
  32. data/lib/cohere/transcribe/api.rb +173 -0
  33. data/lib/cohere/transcribe/asr/batching.rb +472 -0
  34. data/lib/cohere/transcribe/asr/failure_policy.rb +112 -0
  35. data/lib/cohere/transcribe/asr/native.rb +676 -0
  36. data/lib/cohere/transcribe/audio/ATTRIBUTION.md +8 -0
  37. data/lib/cohere/transcribe/audio/LICENSE.auditok +21 -0
  38. data/lib/cohere/transcribe/audio/decoder.rb +315 -0
  39. data/lib/cohere/transcribe/audio/ffmpeg_native.rb +248 -0
  40. data/lib/cohere/transcribe/audio/segmentation.rb +260 -0
  41. data/lib/cohere/transcribe/cli.rb +727 -0
  42. data/lib/cohere/transcribe/configuration.rb +282 -0
  43. data/lib/cohere/transcribe/constants.rb +14 -0
  44. data/lib/cohere/transcribe/dense_converter.rb +548 -0
  45. data/lib/cohere/transcribe/doctor.rb +576 -0
  46. data/lib/cohere/transcribe/errors.rb +57 -0
  47. data/lib/cohere/transcribe/gguf_writer.rb +268 -0
  48. data/lib/cohere/transcribe/hub.rb +436 -0
  49. data/lib/cohere/transcribe/input.rb +110 -0
  50. data/lib/cohere/transcribe/licenses/crispasr.txt +21 -0
  51. data/lib/cohere/transcribe/loader.rb +128 -0
  52. data/lib/cohere/transcribe/model_identity.rb +440 -0
  53. data/lib/cohere/transcribe/output/publication.rb +1118 -0
  54. data/lib/cohere/transcribe/output/rendering.rb +105 -0
  55. data/lib/cohere/transcribe/output/timing.rb +86 -0
  56. data/lib/cohere/transcribe/python_text.rb +70 -0
  57. data/lib/cohere/transcribe/pytorch_checkpoint.rb +1180 -0
  58. data/lib/cohere/transcribe/runtime/engine.rb +1676 -0
  59. data/lib/cohere/transcribe/runtime/model_provider.rb +390 -0
  60. data/lib/cohere/transcribe/runtime/precision.rb +57 -0
  61. data/lib/cohere/transcribe/runtime/preparation.rb +215 -0
  62. data/lib/cohere/transcribe/runtime/resources.rb +165 -0
  63. data/lib/cohere/transcribe/runtime/word_pipeline.rb +364 -0
  64. data/lib/cohere/transcribe/safetensors.rb +579 -0
  65. data/lib/cohere/transcribe/state/checkpoint.rb +224 -0
  66. data/lib/cohere/transcribe/state/contracts.rb +141 -0
  67. data/lib/cohere/transcribe/state/io.rb +727 -0
  68. data/lib/cohere/transcribe/state/locking.rb +211 -0
  69. data/lib/cohere/transcribe/state/manifest.rb +155 -0
  70. data/lib/cohere/transcribe/state.rb +7 -0
  71. data/lib/cohere/transcribe/types.rb +535 -0
  72. data/lib/cohere/transcribe/vad/ATTRIBUTION.md +14 -0
  73. data/lib/cohere/transcribe/vad/LICENSE.faster-whisper +21 -0
  74. data/lib/cohere/transcribe/vad/LICENSE.silero-vad +21 -0
  75. data/lib/cohere/transcribe/vad/silero.rb +344 -0
  76. data/lib/cohere/transcribe/vad/silero_vad_v6.onnx +0 -0
  77. data/lib/cohere/transcribe/vad/timestamps.rb +219 -0
  78. data/lib/cohere/transcribe/version.rb +7 -0
  79. data/lib/cohere/transcribe.rb +26 -0
  80. data/sig/cohere/transcribe.rbs +250 -0
  81. data/vendor/crispasr/AUTHORS +510 -0
  82. data/vendor/crispasr/LICENSE +21 -0
  83. data/vendor/crispasr/UPSTREAM.md +9 -0
  84. data/vendor/crispasr/VERSION +1 -0
  85. data/vendor/crispasr/ggml/AUTHORS +335 -0
  86. data/vendor/crispasr/ggml/CMakeLists.txt +512 -0
  87. data/vendor/crispasr/ggml/LICENSE +21 -0
  88. data/vendor/crispasr/ggml/README.md +49 -0
  89. data/vendor/crispasr/ggml/cmake/FindNCCL.cmake +36 -0
  90. data/vendor/crispasr/ggml/cmake/GitVars.cmake +22 -0
  91. data/vendor/crispasr/ggml/cmake/common.cmake +50 -0
  92. data/vendor/crispasr/ggml/cmake/ggml-config.cmake.in +191 -0
  93. data/vendor/crispasr/ggml/ggml.pc.in +10 -0
  94. data/vendor/crispasr/ggml/include/ggml-alloc.h +85 -0
  95. data/vendor/crispasr/ggml/include/ggml-backend.h +431 -0
  96. data/vendor/crispasr/ggml/include/ggml-blas.h +25 -0
  97. data/vendor/crispasr/ggml/include/ggml-cann.h +123 -0
  98. data/vendor/crispasr/ggml/include/ggml-cpp.h +39 -0
  99. data/vendor/crispasr/ggml/include/ggml-cpu.h +151 -0
  100. data/vendor/crispasr/ggml/include/ggml-cuda.h +50 -0
  101. data/vendor/crispasr/ggml/include/ggml-hexagon.h +19 -0
  102. data/vendor/crispasr/ggml/include/ggml-metal.h +61 -0
  103. data/vendor/crispasr/ggml/include/ggml-opencl.h +26 -0
  104. data/vendor/crispasr/ggml/include/ggml-openvino.h +37 -0
  105. data/vendor/crispasr/ggml/include/ggml-opt.h +256 -0
  106. data/vendor/crispasr/ggml/include/ggml-rpc.h +35 -0
  107. data/vendor/crispasr/ggml/include/ggml-sycl.h +49 -0
  108. data/vendor/crispasr/ggml/include/ggml-virtgpu.h +14 -0
  109. data/vendor/crispasr/ggml/include/ggml-vulkan.h +29 -0
  110. data/vendor/crispasr/ggml/include/ggml-webgpu.h +19 -0
  111. data/vendor/crispasr/ggml/include/ggml-zdnn.h +17 -0
  112. data/vendor/crispasr/ggml/include/ggml-zendnn.h +22 -0
  113. data/vendor/crispasr/ggml/include/ggml.h +2887 -0
  114. data/vendor/crispasr/ggml/include/gguf.h +204 -0
  115. data/vendor/crispasr/ggml/src/CMakeLists.txt +493 -0
  116. data/vendor/crispasr/ggml/src/ggml-alloc.c +1323 -0
  117. data/vendor/crispasr/ggml/src/ggml-backend-dl.cpp +48 -0
  118. data/vendor/crispasr/ggml/src/ggml-backend-dl.h +44 -0
  119. data/vendor/crispasr/ggml/src/ggml-backend-impl.h +275 -0
  120. data/vendor/crispasr/ggml/src/ggml-backend-meta.cpp +2145 -0
  121. data/vendor/crispasr/ggml/src/ggml-backend-reg.cpp +586 -0
  122. data/vendor/crispasr/ggml/src/ggml-backend.cpp +2437 -0
  123. data/vendor/crispasr/ggml/src/ggml-common.h +1900 -0
  124. data/vendor/crispasr/ggml/src/ggml-cpu/CMakeLists.txt +718 -0
  125. data/vendor/crispasr/ggml/src/ggml-cpu/amx/amx.cpp +249 -0
  126. data/vendor/crispasr/ggml/src/ggml-cpu/amx/amx.h +8 -0
  127. data/vendor/crispasr/ggml/src/ggml-cpu/amx/common.h +115 -0
  128. data/vendor/crispasr/ggml/src/ggml-cpu/amx/mmq.cpp +2512 -0
  129. data/vendor/crispasr/ggml/src/ggml-cpu/amx/mmq.h +10 -0
  130. data/vendor/crispasr/ggml/src/ggml-cpu/arch/arm/cpu-feats.cpp +98 -0
  131. data/vendor/crispasr/ggml/src/ggml-cpu/arch/arm/quants.c +4244 -0
  132. data/vendor/crispasr/ggml/src/ggml-cpu/arch/arm/repack.cpp +5156 -0
  133. data/vendor/crispasr/ggml/src/ggml-cpu/arch/loongarch/quants.c +2158 -0
  134. data/vendor/crispasr/ggml/src/ggml-cpu/arch/powerpc/cpu-feats.cpp +82 -0
  135. data/vendor/crispasr/ggml/src/ggml-cpu/arch/powerpc/quants.c +2304 -0
  136. data/vendor/crispasr/ggml/src/ggml-cpu/arch/riscv/cpu-feats.cpp +38 -0
  137. data/vendor/crispasr/ggml/src/ggml-cpu/arch/riscv/quants.c +4455 -0
  138. data/vendor/crispasr/ggml/src/ggml-cpu/arch/riscv/repack.cpp +1703 -0
  139. data/vendor/crispasr/ggml/src/ggml-cpu/arch/s390/cpu-feats.cpp +50 -0
  140. data/vendor/crispasr/ggml/src/ggml-cpu/arch/s390/quants.c +1465 -0
  141. data/vendor/crispasr/ggml/src/ggml-cpu/arch/wasm/quants.c +1220 -0
  142. data/vendor/crispasr/ggml/src/ggml-cpu/arch/x86/cpu-feats.cpp +327 -0
  143. data/vendor/crispasr/ggml/src/ggml-cpu/arch/x86/quants.c +3970 -0
  144. data/vendor/crispasr/ggml/src/ggml-cpu/arch/x86/repack.cpp +6407 -0
  145. data/vendor/crispasr/ggml/src/ggml-cpu/arch-fallback.h +349 -0
  146. data/vendor/crispasr/ggml/src/ggml-cpu/binary-ops.cpp +154 -0
  147. data/vendor/crispasr/ggml/src/ggml-cpu/binary-ops.h +16 -0
  148. data/vendor/crispasr/ggml/src/ggml-cpu/cmake/FindSIMD.cmake +100 -0
  149. data/vendor/crispasr/ggml/src/ggml-cpu/common.h +95 -0
  150. data/vendor/crispasr/ggml/src/ggml-cpu/ggml-cpu-impl.h +539 -0
  151. data/vendor/crispasr/ggml/src/ggml-cpu/ggml-cpu.c +3791 -0
  152. data/vendor/crispasr/ggml/src/ggml-cpu/ggml-cpu.cpp +703 -0
  153. data/vendor/crispasr/ggml/src/ggml-cpu/hbm.cpp +55 -0
  154. data/vendor/crispasr/ggml/src/ggml-cpu/hbm.h +8 -0
  155. data/vendor/crispasr/ggml/src/ggml-cpu/kleidiai/kernels.cpp +939 -0
  156. data/vendor/crispasr/ggml/src/ggml-cpu/kleidiai/kernels.h +90 -0
  157. data/vendor/crispasr/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +1513 -0
  158. data/vendor/crispasr/ggml/src/ggml-cpu/kleidiai/kleidiai.h +17 -0
  159. data/vendor/crispasr/ggml/src/ggml-cpu/llamafile/sgemm.cpp +4051 -0
  160. data/vendor/crispasr/ggml/src/ggml-cpu/llamafile/sgemm.h +25 -0
  161. data/vendor/crispasr/ggml/src/ggml-cpu/ops.cpp +11662 -0
  162. data/vendor/crispasr/ggml/src/ggml-cpu/ops.h +121 -0
  163. data/vendor/crispasr/ggml/src/ggml-cpu/quants.c +1288 -0
  164. data/vendor/crispasr/ggml/src/ggml-cpu/quants.h +103 -0
  165. data/vendor/crispasr/ggml/src/ggml-cpu/repack.cpp +4836 -0
  166. data/vendor/crispasr/ggml/src/ggml-cpu/repack.h +245 -0
  167. data/vendor/crispasr/ggml/src/ggml-cpu/simd-gemm.h +226 -0
  168. data/vendor/crispasr/ggml/src/ggml-cpu/simd-mappings.h +1329 -0
  169. data/vendor/crispasr/ggml/src/ggml-cpu/spacemit/ime.cpp +1025 -0
  170. data/vendor/crispasr/ggml/src/ggml-cpu/spacemit/ime.h +13 -0
  171. data/vendor/crispasr/ggml/src/ggml-cpu/spacemit/ime1_kernels.cpp +3196 -0
  172. data/vendor/crispasr/ggml/src/ggml-cpu/spacemit/ime_kernels.h +26 -0
  173. data/vendor/crispasr/ggml/src/ggml-cpu/traits.cpp +36 -0
  174. data/vendor/crispasr/ggml/src/ggml-cpu/traits.h +38 -0
  175. data/vendor/crispasr/ggml/src/ggml-cpu/unary-ops.cpp +336 -0
  176. data/vendor/crispasr/ggml/src/ggml-cpu/unary-ops.h +35 -0
  177. data/vendor/crispasr/ggml/src/ggml-cpu/vec.cpp +681 -0
  178. data/vendor/crispasr/ggml/src/ggml-cpu/vec.h +1606 -0
  179. data/vendor/crispasr/ggml/src/ggml-cuda/CMakeLists.txt +272 -0
  180. data/vendor/crispasr/ggml/src/ggml-cuda/acc.cu +61 -0
  181. data/vendor/crispasr/ggml/src/ggml-cuda/acc.cuh +5 -0
  182. data/vendor/crispasr/ggml/src/ggml-cuda/add-id.cu +58 -0
  183. data/vendor/crispasr/ggml/src/ggml-cuda/add-id.cuh +3 -0
  184. data/vendor/crispasr/ggml/src/ggml-cuda/arange.cu +34 -0
  185. data/vendor/crispasr/ggml/src/ggml-cuda/arange.cuh +5 -0
  186. data/vendor/crispasr/ggml/src/ggml-cuda/argmax.cu +91 -0
  187. data/vendor/crispasr/ggml/src/ggml-cuda/argmax.cuh +3 -0
  188. data/vendor/crispasr/ggml/src/ggml-cuda/argsort.cu +265 -0
  189. data/vendor/crispasr/ggml/src/ggml-cuda/argsort.cuh +19 -0
  190. data/vendor/crispasr/ggml/src/ggml-cuda/binbcast.cu +534 -0
  191. data/vendor/crispasr/ggml/src/ggml-cuda/binbcast.cuh +12 -0
  192. data/vendor/crispasr/ggml/src/ggml-cuda/clamp.cu +45 -0
  193. data/vendor/crispasr/ggml/src/ggml-cuda/clamp.cuh +5 -0
  194. data/vendor/crispasr/ggml/src/ggml-cuda/col2im-1d.cu +81 -0
  195. data/vendor/crispasr/ggml/src/ggml-cuda/col2im-1d.cuh +3 -0
  196. data/vendor/crispasr/ggml/src/ggml-cuda/common.cuh +1489 -0
  197. data/vendor/crispasr/ggml/src/ggml-cuda/concat.cu +204 -0
  198. data/vendor/crispasr/ggml/src/ggml-cuda/concat.cuh +5 -0
  199. data/vendor/crispasr/ggml/src/ggml-cuda/conv-transpose-1d.cu +97 -0
  200. data/vendor/crispasr/ggml/src/ggml-cuda/conv-transpose-1d.cuh +5 -0
  201. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d-dw.cu +161 -0
  202. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d-dw.cuh +5 -0
  203. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d-transpose.cu +115 -0
  204. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d-transpose.cuh +5 -0
  205. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d.cu +166 -0
  206. data/vendor/crispasr/ggml/src/ggml-cuda/conv2d.cuh +5 -0
  207. data/vendor/crispasr/ggml/src/ggml-cuda/convert.cu +892 -0
  208. data/vendor/crispasr/ggml/src/ggml-cuda/convert.cuh +66 -0
  209. data/vendor/crispasr/ggml/src/ggml-cuda/count-equal.cu +64 -0
  210. data/vendor/crispasr/ggml/src/ggml-cuda/count-equal.cuh +5 -0
  211. data/vendor/crispasr/ggml/src/ggml-cuda/cp-async.cuh +57 -0
  212. data/vendor/crispasr/ggml/src/ggml-cuda/cpy-utils.cuh +217 -0
  213. data/vendor/crispasr/ggml/src/ggml-cuda/cpy.cu +581 -0
  214. data/vendor/crispasr/ggml/src/ggml-cuda/cpy.cuh +7 -0
  215. data/vendor/crispasr/ggml/src/ggml-cuda/cross-entropy-loss.cu +177 -0
  216. data/vendor/crispasr/ggml/src/ggml-cuda/cross-entropy-loss.cuh +7 -0
  217. data/vendor/crispasr/ggml/src/ggml-cuda/cumsum.cu +307 -0
  218. data/vendor/crispasr/ggml/src/ggml-cuda/cumsum.cuh +5 -0
  219. data/vendor/crispasr/ggml/src/ggml-cuda/dequantize.cuh +99 -0
  220. data/vendor/crispasr/ggml/src/ggml-cuda/diag.cu +77 -0
  221. data/vendor/crispasr/ggml/src/ggml-cuda/diag.cuh +5 -0
  222. data/vendor/crispasr/ggml/src/ggml-cuda/diagmask.cu +40 -0
  223. data/vendor/crispasr/ggml/src/ggml-cuda/diagmask.cuh +5 -0
  224. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-common.cuh +1212 -0
  225. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-mma-f16.cuh +1860 -0
  226. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-tile.cu +57 -0
  227. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-tile.cuh +1309 -0
  228. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-vec.cuh +600 -0
  229. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-wmma-f16.cu +696 -0
  230. data/vendor/crispasr/ggml/src/ggml-cuda/fattn-wmma-f16.cuh +51 -0
  231. data/vendor/crispasr/ggml/src/ggml-cuda/fattn.cu +620 -0
  232. data/vendor/crispasr/ggml/src/ggml-cuda/fattn.cuh +5 -0
  233. data/vendor/crispasr/ggml/src/ggml-cuda/fill.cu +37 -0
  234. data/vendor/crispasr/ggml/src/ggml-cuda/fill.cuh +3 -0
  235. data/vendor/crispasr/ggml/src/ggml-cuda/gated_delta_net.cu +273 -0
  236. data/vendor/crispasr/ggml/src/ggml-cuda/gated_delta_net.cuh +4 -0
  237. data/vendor/crispasr/ggml/src/ggml-cuda/getrows.cu +332 -0
  238. data/vendor/crispasr/ggml/src/ggml-cuda/getrows.cuh +15 -0
  239. data/vendor/crispasr/ggml/src/ggml-cuda/ggml-cuda.cu +5580 -0
  240. data/vendor/crispasr/ggml/src/ggml-cuda/gla.cu +93 -0
  241. data/vendor/crispasr/ggml/src/ggml-cuda/gla.cuh +3 -0
  242. data/vendor/crispasr/ggml/src/ggml-cuda/im2col.cu +274 -0
  243. data/vendor/crispasr/ggml/src/ggml-cuda/im2col.cuh +6 -0
  244. data/vendor/crispasr/ggml/src/ggml-cuda/mean.cu +75 -0
  245. data/vendor/crispasr/ggml/src/ggml-cuda/mean.cuh +3 -0
  246. data/vendor/crispasr/ggml/src/ggml-cuda/mma.cuh +1333 -0
  247. data/vendor/crispasr/ggml/src/ggml-cuda/mmf.cu +191 -0
  248. data/vendor/crispasr/ggml/src/ggml-cuda/mmf.cuh +908 -0
  249. data/vendor/crispasr/ggml/src/ggml-cuda/mmid.cu +164 -0
  250. data/vendor/crispasr/ggml/src/ggml-cuda/mmid.cuh +5 -0
  251. data/vendor/crispasr/ggml/src/ggml-cuda/mmq.cu +372 -0
  252. data/vendor/crispasr/ggml/src/ggml-cuda/mmq.cuh +4175 -0
  253. data/vendor/crispasr/ggml/src/ggml-cuda/mmvf.cu +862 -0
  254. data/vendor/crispasr/ggml/src/ggml-cuda/mmvf.cuh +14 -0
  255. data/vendor/crispasr/ggml/src/ggml-cuda/mmvq.cu +1161 -0
  256. data/vendor/crispasr/ggml/src/ggml-cuda/mmvq.cuh +16 -0
  257. data/vendor/crispasr/ggml/src/ggml-cuda/norm.cu +756 -0
  258. data/vendor/crispasr/ggml/src/ggml-cuda/norm.cuh +20 -0
  259. data/vendor/crispasr/ggml/src/ggml-cuda/opt-step-adamw.cu +78 -0
  260. data/vendor/crispasr/ggml/src/ggml-cuda/opt-step-adamw.cuh +5 -0
  261. data/vendor/crispasr/ggml/src/ggml-cuda/opt-step-sgd.cu +49 -0
  262. data/vendor/crispasr/ggml/src/ggml-cuda/opt-step-sgd.cuh +5 -0
  263. data/vendor/crispasr/ggml/src/ggml-cuda/out-prod.cu +68 -0
  264. data/vendor/crispasr/ggml/src/ggml-cuda/out-prod.cuh +3 -0
  265. data/vendor/crispasr/ggml/src/ggml-cuda/pad.cu +106 -0
  266. data/vendor/crispasr/ggml/src/ggml-cuda/pad.cuh +5 -0
  267. data/vendor/crispasr/ggml/src/ggml-cuda/pad_reflect_1d.cu +91 -0
  268. data/vendor/crispasr/ggml/src/ggml-cuda/pad_reflect_1d.cuh +5 -0
  269. data/vendor/crispasr/ggml/src/ggml-cuda/pool2d.cu +94 -0
  270. data/vendor/crispasr/ggml/src/ggml-cuda/pool2d.cuh +5 -0
  271. data/vendor/crispasr/ggml/src/ggml-cuda/quantize.cu +443 -0
  272. data/vendor/crispasr/ggml/src/ggml-cuda/quantize.cuh +41 -0
  273. data/vendor/crispasr/ggml/src/ggml-cuda/reduce_rows.cuh +39 -0
  274. data/vendor/crispasr/ggml/src/ggml-cuda/roll.cu +67 -0
  275. data/vendor/crispasr/ggml/src/ggml-cuda/roll.cuh +5 -0
  276. data/vendor/crispasr/ggml/src/ggml-cuda/rope.cu +665 -0
  277. data/vendor/crispasr/ggml/src/ggml-cuda/rope.cuh +9 -0
  278. data/vendor/crispasr/ggml/src/ggml-cuda/scale.cu +34 -0
  279. data/vendor/crispasr/ggml/src/ggml-cuda/scale.cuh +5 -0
  280. data/vendor/crispasr/ggml/src/ggml-cuda/set-rows.cu +330 -0
  281. data/vendor/crispasr/ggml/src/ggml-cuda/set-rows.cuh +7 -0
  282. data/vendor/crispasr/ggml/src/ggml-cuda/set.cu +39 -0
  283. data/vendor/crispasr/ggml/src/ggml-cuda/set.cuh +7 -0
  284. data/vendor/crispasr/ggml/src/ggml-cuda/softcap.cu +34 -0
  285. data/vendor/crispasr/ggml/src/ggml-cuda/softcap.cuh +5 -0
  286. data/vendor/crispasr/ggml/src/ggml-cuda/softmax.cu +472 -0
  287. data/vendor/crispasr/ggml/src/ggml-cuda/softmax.cuh +7 -0
  288. data/vendor/crispasr/ggml/src/ggml-cuda/solve_tri.cu +275 -0
  289. data/vendor/crispasr/ggml/src/ggml-cuda/solve_tri.cuh +3 -0
  290. data/vendor/crispasr/ggml/src/ggml-cuda/ssm-conv.cu +197 -0
  291. data/vendor/crispasr/ggml/src/ggml-cuda/ssm-conv.cuh +3 -0
  292. data/vendor/crispasr/ggml/src/ggml-cuda/ssm-scan.cu +342 -0
  293. data/vendor/crispasr/ggml/src/ggml-cuda/ssm-scan.cuh +3 -0
  294. data/vendor/crispasr/ggml/src/ggml-cuda/sum.cu +41 -0
  295. data/vendor/crispasr/ggml/src/ggml-cuda/sum.cuh +5 -0
  296. data/vendor/crispasr/ggml/src/ggml-cuda/sumrows.cu +43 -0
  297. data/vendor/crispasr/ggml/src/ggml-cuda/sumrows.cuh +4 -0
  298. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_16.cu +5 -0
  299. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_32.cu +6 -0
  300. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_1-ncols2_8.cu +11 -0
  301. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_1.cu +10 -0
  302. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_2.cu +10 -0
  303. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_4.cu +12 -0
  304. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_16.cu +5 -0
  305. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_32.cu +6 -0
  306. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_4.cu +12 -0
  307. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_2-ncols2_8.cu +11 -0
  308. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_1.cu +10 -0
  309. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_2.cu +10 -0
  310. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_16.cu +5 -0
  311. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_2.cu +10 -0
  312. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_4.cu +12 -0
  313. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_8.cu +11 -0
  314. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_64-ncols2_1.cu +10 -0
  315. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_1.cu +10 -0
  316. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_2.cu +10 -0
  317. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_4.cu +12 -0
  318. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_8.cu +11 -0
  319. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq112-dv112.cu +5 -0
  320. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq128-dv128.cu +5 -0
  321. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq256-dv256.cu +5 -0
  322. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq320-dv256.cu +5 -0
  323. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq40-dv40.cu +5 -0
  324. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq512-dv512.cu +5 -0
  325. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq576-dv512.cu +5 -0
  326. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq64-dv64.cu +5 -0
  327. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq72-dv72.cu +5 -0
  328. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq80-dv80.cu +5 -0
  329. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq96-dv96.cu +5 -0
  330. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-bf16.cu +7 -0
  331. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-f16.cu +7 -0
  332. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-q4_0.cu +7 -0
  333. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-q4_1.cu +7 -0
  334. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-q5_0.cu +7 -0
  335. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-q5_1.cu +7 -0
  336. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-bf16-q8_0.cu +7 -0
  337. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-bf16.cu +7 -0
  338. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-f16.cu +7 -0
  339. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q4_0.cu +7 -0
  340. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q4_1.cu +7 -0
  341. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q5_0.cu +7 -0
  342. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q5_1.cu +7 -0
  343. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q8_0.cu +7 -0
  344. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-bf16.cu +7 -0
  345. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-f16.cu +7 -0
  346. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q4_0.cu +7 -0
  347. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q4_1.cu +7 -0
  348. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q5_0.cu +7 -0
  349. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q5_1.cu +7 -0
  350. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q8_0.cu +7 -0
  351. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-bf16.cu +7 -0
  352. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-f16.cu +7 -0
  353. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q4_0.cu +7 -0
  354. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q4_1.cu +7 -0
  355. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q5_0.cu +7 -0
  356. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q5_1.cu +7 -0
  357. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q8_0.cu +7 -0
  358. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-bf16.cu +7 -0
  359. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-f16.cu +7 -0
  360. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q4_0.cu +7 -0
  361. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q4_1.cu +7 -0
  362. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q5_0.cu +7 -0
  363. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q5_1.cu +7 -0
  364. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q8_0.cu +7 -0
  365. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-bf16.cu +7 -0
  366. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-f16.cu +7 -0
  367. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q4_0.cu +7 -0
  368. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q4_1.cu +7 -0
  369. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q5_0.cu +7 -0
  370. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q5_1.cu +7 -0
  371. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q8_0.cu +7 -0
  372. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-bf16.cu +7 -0
  373. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-f16.cu +7 -0
  374. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q4_0.cu +7 -0
  375. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q4_1.cu +7 -0
  376. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q5_0.cu +7 -0
  377. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q5_1.cu +7 -0
  378. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q8_0.cu +7 -0
  379. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_1.cu +5 -0
  380. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_10.cu +5 -0
  381. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_11.cu +5 -0
  382. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_12.cu +5 -0
  383. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_13.cu +5 -0
  384. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_14.cu +5 -0
  385. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_15.cu +5 -0
  386. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_16.cu +5 -0
  387. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_2.cu +5 -0
  388. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_3.cu +5 -0
  389. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_4.cu +5 -0
  390. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_5.cu +5 -0
  391. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_6.cu +5 -0
  392. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_7.cu +5 -0
  393. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_8.cu +5 -0
  394. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_9.cu +5 -0
  395. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq1_s.cu +5 -0
  396. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_s.cu +5 -0
  397. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_xs.cu +5 -0
  398. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq2_xxs.cu +5 -0
  399. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq3_s.cu +5 -0
  400. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq3_xxs.cu +5 -0
  401. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq4_nl.cu +5 -0
  402. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-iq4_xs.cu +5 -0
  403. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-mxfp4.cu +5 -0
  404. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-nvfp4.cu +5 -0
  405. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q1_0.cu +5 -0
  406. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q2_k.cu +5 -0
  407. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q3_k.cu +5 -0
  408. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_0.cu +5 -0
  409. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_1.cu +5 -0
  410. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q4_k.cu +5 -0
  411. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_0.cu +5 -0
  412. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_1.cu +5 -0
  413. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q5_k.cu +5 -0
  414. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q6_k.cu +5 -0
  415. data/vendor/crispasr/ggml/src/ggml-cuda/template-instances/mmq-instance-q8_0.cu +5 -0
  416. data/vendor/crispasr/ggml/src/ggml-cuda/top-k.cu +95 -0
  417. data/vendor/crispasr/ggml/src/ggml-cuda/top-k.cuh +3 -0
  418. data/vendor/crispasr/ggml/src/ggml-cuda/topk-moe.cu +415 -0
  419. data/vendor/crispasr/ggml/src/ggml-cuda/topk-moe.cuh +27 -0
  420. data/vendor/crispasr/ggml/src/ggml-cuda/tri.cu +136 -0
  421. data/vendor/crispasr/ggml/src/ggml-cuda/tri.cuh +5 -0
  422. data/vendor/crispasr/ggml/src/ggml-cuda/tsembd.cu +47 -0
  423. data/vendor/crispasr/ggml/src/ggml-cuda/tsembd.cuh +5 -0
  424. data/vendor/crispasr/ggml/src/ggml-cuda/unary.cu +644 -0
  425. data/vendor/crispasr/ggml/src/ggml-cuda/unary.cuh +116 -0
  426. data/vendor/crispasr/ggml/src/ggml-cuda/upscale.cu +293 -0
  427. data/vendor/crispasr/ggml/src/ggml-cuda/upscale.cuh +5 -0
  428. data/vendor/crispasr/ggml/src/ggml-cuda/vecdotq.cuh +1317 -0
  429. data/vendor/crispasr/ggml/src/ggml-cuda/vendors/cuda.h +28 -0
  430. data/vendor/crispasr/ggml/src/ggml-cuda/vendors/hip.h +306 -0
  431. data/vendor/crispasr/ggml/src/ggml-cuda/vendors/musa.h +148 -0
  432. data/vendor/crispasr/ggml/src/ggml-cuda/wkv.cu +199 -0
  433. data/vendor/crispasr/ggml/src/ggml-cuda/wkv.cuh +7 -0
  434. data/vendor/crispasr/ggml/src/ggml-impl.h +783 -0
  435. data/vendor/crispasr/ggml/src/ggml-metal/CMakeLists.txt +124 -0
  436. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-common.cpp +457 -0
  437. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-common.h +52 -0
  438. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-context.h +41 -0
  439. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-context.m +778 -0
  440. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-device.cpp +2117 -0
  441. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-device.h +299 -0
  442. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-device.m +2093 -0
  443. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-impl.h +1267 -0
  444. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-ops.cpp +5023 -0
  445. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal-ops.h +111 -0
  446. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal.cpp +954 -0
  447. data/vendor/crispasr/ggml/src/ggml-metal/ggml-metal.metal +11756 -0
  448. data/vendor/crispasr/ggml/src/ggml-opt.cpp +1094 -0
  449. data/vendor/crispasr/ggml/src/ggml-quants.c +5491 -0
  450. data/vendor/crispasr/ggml/src/ggml-quants.h +112 -0
  451. data/vendor/crispasr/ggml/src/ggml-threading.cpp +12 -0
  452. data/vendor/crispasr/ggml/src/ggml-threading.h +14 -0
  453. data/vendor/crispasr/ggml/src/ggml.c +7925 -0
  454. data/vendor/crispasr/ggml/src/ggml.cpp +26 -0
  455. data/vendor/crispasr/ggml/src/gguf.cpp +1556 -0
  456. data/vendor/crispasr/src/cohere-arch.h +137 -0
  457. data/vendor/crispasr/src/cohere.cpp +5642 -0
  458. data/vendor/crispasr/src/cohere.h +327 -0
  459. data/vendor/crispasr/src/cohere_batch_planner.h +82 -0
  460. data/vendor/crispasr/src/cohere_chunking.h +64 -0
  461. data/vendor/crispasr/src/cohere_decoder_batch_layout.h +60 -0
  462. data/vendor/crispasr/src/cohere_encoder_padded_layout.h +27 -0
  463. data/vendor/crispasr/src/cohere_frontend.cpp +189 -0
  464. data/vendor/crispasr/src/cohere_frontend.h +31 -0
  465. data/vendor/crispasr/src/cohere_ragged_controller.h +149 -0
  466. data/vendor/crispasr/src/cohere_token_renderer.h +181 -0
  467. data/vendor/crispasr/src/core/attention.h +924 -0
  468. data/vendor/crispasr/src/core/audio_chunking.h +97 -0
  469. data/vendor/crispasr/src/core/beam_decode.h +486 -0
  470. data/vendor/crispasr/src/core/cpu_ops.h +135 -0
  471. data/vendor/crispasr/src/core/gguf_loader.cpp +1021 -0
  472. data/vendor/crispasr/src/core/gguf_loader.h +216 -0
  473. data/vendor/crispasr/src/core/gpu_backend_pref.h +119 -0
  474. data/vendor/crispasr/src/core/mel.cpp +519 -0
  475. data/vendor/crispasr/src/core/mel.h +265 -0
  476. data/vendor/crispasr/src/core/ngram_loop_fix.h +173 -0
  477. data/vendor/crispasr/src/core/repetition_loop_guard.h +54 -0
  478. data/vendor/crispasr/src/crispasr_imatrix.cpp +255 -0
  479. data/vendor/crispasr/src/crispasr_imatrix.h +38 -0
  480. metadata +596 -0
@@ -0,0 +1,95 @@
1
+ #pragma once
2
+
3
+ #include "ggml.h"
4
+ #include "traits.h"
5
+ #include "ggml-cpu-impl.h"
6
+ #include "ggml-impl.h"
7
+ #include "simd-mappings.h"
8
+
9
+ #define GGML_FA_TILE_Q 64
10
+ #define GGML_FA_TILE_KV 64
11
+
12
+ #ifdef __cplusplus
13
+
14
+ #include <utility>
15
+
16
+ // convenience functions/macros for use in template calls
17
+ // note: these won't be required after the 'traits' lookup table is used.
18
+ static inline ggml_fp16_t f32_to_f16(float x) {
19
+ return GGML_CPU_FP32_TO_FP16(x);
20
+ }
21
+
22
+ static inline float f16_to_f32(ggml_fp16_t x) {
23
+ return GGML_CPU_FP16_TO_FP32(x);
24
+ }
25
+
26
+ static inline ggml_bf16_t f32_to_bf16(float x) {
27
+ return GGML_FP32_TO_BF16(x);
28
+ }
29
+
30
+ static inline float bf16_to_f32(ggml_bf16_t x) {
31
+ return GGML_BF16_TO_FP32(x);
32
+ }
33
+
34
+ static inline float i32_to_f32(int32_t x) {
35
+ return x;
36
+ }
37
+
38
+ static inline int32_t f32_to_i32(float x) {
39
+ return x;
40
+ }
41
+
42
+ static inline float f32_to_f32(float x) {
43
+ return x;
44
+ }
45
+
46
+ // TODO - merge this into the traits table, after using row-based conversions
47
+ template <class T>
48
+ struct type_conversion_table;
49
+
50
+ template <>
51
+ struct type_conversion_table<ggml_fp16_t> {
52
+ static constexpr float (*to_f32)(ggml_fp16_t) = f16_to_f32;
53
+ static constexpr ggml_fp16_t (*from_f32)(float) = f32_to_f16;
54
+ };
55
+
56
+ template <>
57
+ struct type_conversion_table<float> {
58
+ static constexpr float (*to_f32)(float) = f32_to_f32;
59
+ static constexpr float (*from_f32)(float) = f32_to_f32;
60
+ };
61
+
62
+ template <>
63
+ struct type_conversion_table<ggml_bf16_t> {
64
+ static constexpr float (*to_f32)(ggml_bf16_t) = bf16_to_f32;
65
+ static constexpr ggml_bf16_t (*from_f32)(float) = f32_to_bf16;
66
+ };
67
+
68
+ template <>
69
+ struct type_conversion_table<int32_t> {
70
+ static constexpr float (*to_f32)(int32_t) = i32_to_f32;
71
+ static constexpr int32_t (*from_f32)(float) = f32_to_i32;
72
+ };
73
+
74
+ static std::pair<int64_t, int64_t> get_thread_range(const struct ggml_compute_params * params, const struct ggml_tensor * src0) {
75
+ const int64_t ith = params->ith;
76
+ const int64_t nth = params->nth;
77
+
78
+ const int64_t nr = ggml_nrows(src0);
79
+
80
+ // rows per thread
81
+ const int64_t dr = (nr + nth - 1)/nth;
82
+
83
+ // row range for this thread
84
+ const int64_t ir0 = dr*ith;
85
+ const int64_t ir1 = MIN(ir0 + dr, nr);
86
+
87
+ return {ir0, ir1};
88
+ }
89
+
90
+ struct ggml_fa_tile_config {
91
+ static constexpr size_t Q = GGML_FA_TILE_Q;
92
+ static constexpr size_t KV = GGML_FA_TILE_KV;
93
+ };
94
+
95
+ #endif
@@ -0,0 +1,539 @@
1
+ #pragma once
2
+
3
+ // GGML CPU internal header
4
+
5
+ #include "ggml.h"
6
+ #include "ggml-impl.h"
7
+
8
+ #include <stdlib.h> // load `stdlib.h` before other headers to work around MinGW bug: https://sourceforge.net/p/mingw-w64/bugs/192/
9
+ //#include <stddef.h>
10
+ #include <stdbool.h>
11
+ #include <string.h> // memcpy
12
+ #include <math.h> // fabsf
13
+
14
+ #ifdef __cplusplus
15
+ extern "C" {
16
+ #endif
17
+
18
+ struct ggml_compute_params {
19
+ // ith = thread index, nth = number of threads
20
+ int ith, nth;
21
+
22
+ // work buffer for all threads
23
+ size_t wsize;
24
+ void * wdata;
25
+
26
+ struct ggml_threadpool * threadpool;
27
+
28
+ // use reference implementation
29
+ bool use_ref;
30
+ };
31
+
32
+
33
+ #if defined(_MSC_VER)
34
+
35
+ #define m512bh(p) p
36
+ #define m512i(p) p
37
+
38
+ #else
39
+
40
+ #define m512bh(p) (__m512bh)(p)
41
+ #define m512i(p) (__m512i)(p)
42
+
43
+ #endif
44
+
45
+ // __FMA__ and __F16C__ are not defined in MSVC, however they are implied with AVX2/AVX512
46
+ #if defined(_MSC_VER) && (defined(__AVX2__) || defined(__AVX512F__))
47
+ #ifndef __FMA__
48
+ #define __FMA__
49
+ #endif
50
+ #ifndef __F16C__
51
+ #define __F16C__
52
+ #endif
53
+ #endif
54
+
55
+ // __SSE3__ and __SSSE3__ are not defined in MSVC, but SSE3/SSSE3 are present when AVX/AVX2/AVX512 are available
56
+ #if defined(_MSC_VER) && (defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__))
57
+ #ifndef __SSE3__
58
+ #define __SSE3__
59
+ #endif
60
+ #ifndef __SSSE3__
61
+ #define __SSSE3__
62
+ #endif
63
+ #endif
64
+
65
+ #if defined(__s390x__) && defined(__VEC__)
66
+ #ifndef __VXE__
67
+ #define __VXE__
68
+ #endif // __VXE__
69
+ #ifndef __VXE2__
70
+ #define __VXE2__
71
+ #endif // __VXE2__
72
+ #endif // __s390x__ && __VEC__
73
+
74
+ #if defined(__ARM_FEATURE_SVE) && defined(__linux__)
75
+ #include <sys/prctl.h>
76
+ #endif
77
+
78
+ #if defined(__ARM_NEON)
79
+
80
+ // ref: https://github.com/ggml-org/llama.cpp/pull/5404
81
+ #ifdef _MSC_VER
82
+ #define ggml_vld1q_u32(w,x,y,z) { ((w) + ((uint64_t)(x) << 32)), ((y) + ((uint64_t)(z) << 32)) }
83
+ #else
84
+ #define ggml_vld1q_u32(w,x,y,z) { (w), (x), (y), (z) }
85
+ #endif // _MSC_VER
86
+
87
+ #if !defined(__aarch64__)
88
+
89
+ // 32-bit ARM compatibility
90
+
91
+ // vaddlvq_s16
92
+ // vpaddq_s16
93
+ // vpaddq_s32
94
+ // vaddvq_s32
95
+ // vaddvq_f32
96
+ // vmaxvq_f32
97
+ // vcvtnq_s32_f32
98
+ // vzip1_u8
99
+ // vzip2_u8
100
+
101
+ inline static int32_t vaddlvq_s16(int16x8_t v) {
102
+ int32x4_t v0 = vreinterpretq_s32_s64(vpaddlq_s32(vpaddlq_s16(v)));
103
+ return vgetq_lane_s32(v0, 0) + vgetq_lane_s32(v0, 2);
104
+ }
105
+
106
+ inline static int16x8_t vpaddq_s16(int16x8_t a, int16x8_t b) {
107
+ int16x4_t a0 = vpadd_s16(vget_low_s16(a), vget_high_s16(a));
108
+ int16x4_t b0 = vpadd_s16(vget_low_s16(b), vget_high_s16(b));
109
+ return vcombine_s16(a0, b0);
110
+ }
111
+
112
+ inline static int32x4_t vpaddq_s32(int32x4_t a, int32x4_t b) {
113
+ int32x2_t a0 = vpadd_s32(vget_low_s32(a), vget_high_s32(a));
114
+ int32x2_t b0 = vpadd_s32(vget_low_s32(b), vget_high_s32(b));
115
+ return vcombine_s32(a0, b0);
116
+ }
117
+
118
+ inline static int32_t vaddvq_s32(int32x4_t v) {
119
+ return vgetq_lane_s32(v, 0) + vgetq_lane_s32(v, 1) + vgetq_lane_s32(v, 2) + vgetq_lane_s32(v, 3);
120
+ }
121
+
122
+ inline static float vaddvq_f32(float32x4_t v) {
123
+ return vgetq_lane_f32(v, 0) + vgetq_lane_f32(v, 1) + vgetq_lane_f32(v, 2) + vgetq_lane_f32(v, 3);
124
+ }
125
+
126
+ inline static float vmaxvq_f32(float32x4_t v) {
127
+ return
128
+ MAX(MAX(vgetq_lane_f32(v, 0), vgetq_lane_f32(v, 1)),
129
+ MAX(vgetq_lane_f32(v, 2), vgetq_lane_f32(v, 3)));
130
+ }
131
+
132
+ inline static int32x4_t vcvtnq_s32_f32(float32x4_t v) {
133
+ int32x4_t res;
134
+
135
+ res[0] = roundf(vgetq_lane_f32(v, 0));
136
+ res[1] = roundf(vgetq_lane_f32(v, 1));
137
+ res[2] = roundf(vgetq_lane_f32(v, 2));
138
+ res[3] = roundf(vgetq_lane_f32(v, 3));
139
+
140
+ return res;
141
+ }
142
+
143
+ inline static uint8x8_t vzip1_u8(uint8x8_t a, uint8x8_t b) {
144
+ uint8x8_t res;
145
+
146
+ res[0] = a[0]; res[1] = b[0];
147
+ res[2] = a[1]; res[3] = b[1];
148
+ res[4] = a[2]; res[5] = b[2];
149
+ res[6] = a[3]; res[7] = b[3];
150
+
151
+ return res;
152
+ }
153
+
154
+ inline static uint8x8_t vzip2_u8(uint8x8_t a, uint8x8_t b) {
155
+ uint8x8_t res;
156
+
157
+ res[0] = a[4]; res[1] = b[4];
158
+ res[2] = a[5]; res[3] = b[5];
159
+ res[4] = a[6]; res[5] = b[6];
160
+ res[6] = a[7]; res[7] = b[7];
161
+
162
+ return res;
163
+ }
164
+
165
+ // vld1q_s16_x2
166
+ // vld1q_u8_x2
167
+ // vld1q_u8_x4
168
+ // vld1q_s8_x2
169
+ // vld1q_s8_x4
170
+ // TODO: double-check these work correctly
171
+
172
+ typedef struct ggml_int16x8x2_t {
173
+ int16x8_t val[2];
174
+ } ggml_int16x8x2_t;
175
+
176
+ inline static ggml_int16x8x2_t ggml_vld1q_s16_x2(const int16_t * ptr) {
177
+ ggml_int16x8x2_t res;
178
+
179
+ res.val[0] = vld1q_s16(ptr + 0);
180
+ res.val[1] = vld1q_s16(ptr + 8);
181
+
182
+ return res;
183
+ }
184
+
185
+ typedef struct ggml_uint8x16x2_t {
186
+ uint8x16_t val[2];
187
+ } ggml_uint8x16x2_t;
188
+
189
+ inline static ggml_uint8x16x2_t ggml_vld1q_u8_x2(const uint8_t * ptr) {
190
+ ggml_uint8x16x2_t res;
191
+
192
+ res.val[0] = vld1q_u8(ptr + 0);
193
+ res.val[1] = vld1q_u8(ptr + 16);
194
+
195
+ return res;
196
+ }
197
+
198
+ typedef struct ggml_uint8x16x4_t {
199
+ uint8x16_t val[4];
200
+ } ggml_uint8x16x4_t;
201
+
202
+ inline static ggml_uint8x16x4_t ggml_vld1q_u8_x4(const uint8_t * ptr) {
203
+ ggml_uint8x16x4_t res;
204
+
205
+ res.val[0] = vld1q_u8(ptr + 0);
206
+ res.val[1] = vld1q_u8(ptr + 16);
207
+ res.val[2] = vld1q_u8(ptr + 32);
208
+ res.val[3] = vld1q_u8(ptr + 48);
209
+
210
+ return res;
211
+ }
212
+
213
+ typedef struct ggml_int8x16x2_t {
214
+ int8x16_t val[2];
215
+ } ggml_int8x16x2_t;
216
+
217
+ inline static ggml_int8x16x2_t ggml_vld1q_s8_x2(const int8_t * ptr) {
218
+ ggml_int8x16x2_t res;
219
+
220
+ res.val[0] = vld1q_s8(ptr + 0);
221
+ res.val[1] = vld1q_s8(ptr + 16);
222
+
223
+ return res;
224
+ }
225
+
226
+ typedef struct ggml_int8x16x4_t {
227
+ int8x16_t val[4];
228
+ } ggml_int8x16x4_t;
229
+
230
+ inline static ggml_int8x16x4_t ggml_vld1q_s8_x4(const int8_t * ptr) {
231
+ ggml_int8x16x4_t res;
232
+
233
+ res.val[0] = vld1q_s8(ptr + 0);
234
+ res.val[1] = vld1q_s8(ptr + 16);
235
+ res.val[2] = vld1q_s8(ptr + 32);
236
+ res.val[3] = vld1q_s8(ptr + 48);
237
+
238
+ return res;
239
+ }
240
+
241
+ // NOTE: not tested
242
+ inline static int8x16_t ggml_vqtbl1q_s8(int8x16_t a, uint8x16_t b) {
243
+ int8x16_t res;
244
+
245
+ res[ 0] = a[b[ 0]];
246
+ res[ 1] = a[b[ 1]];
247
+ res[ 2] = a[b[ 2]];
248
+ res[ 3] = a[b[ 3]];
249
+ res[ 4] = a[b[ 4]];
250
+ res[ 5] = a[b[ 5]];
251
+ res[ 6] = a[b[ 6]];
252
+ res[ 7] = a[b[ 7]];
253
+ res[ 8] = a[b[ 8]];
254
+ res[ 9] = a[b[ 9]];
255
+ res[10] = a[b[10]];
256
+ res[11] = a[b[11]];
257
+ res[12] = a[b[12]];
258
+ res[13] = a[b[13]];
259
+ res[14] = a[b[14]];
260
+ res[15] = a[b[15]];
261
+
262
+ return res;
263
+ }
264
+
265
+ // NOTE: not tested
266
+ inline static uint8x16_t ggml_vqtbl1q_u8(uint8x16_t a, uint8x16_t b) {
267
+ uint8x16_t res;
268
+
269
+ res[ 0] = a[b[ 0]];
270
+ res[ 1] = a[b[ 1]];
271
+ res[ 2] = a[b[ 2]];
272
+ res[ 3] = a[b[ 3]];
273
+ res[ 4] = a[b[ 4]];
274
+ res[ 5] = a[b[ 5]];
275
+ res[ 6] = a[b[ 6]];
276
+ res[ 7] = a[b[ 7]];
277
+ res[ 8] = a[b[ 8]];
278
+ res[ 9] = a[b[ 9]];
279
+ res[10] = a[b[10]];
280
+ res[11] = a[b[11]];
281
+ res[12] = a[b[12]];
282
+ res[13] = a[b[13]];
283
+ res[14] = a[b[14]];
284
+ res[15] = a[b[15]];
285
+
286
+ return res;
287
+ }
288
+
289
+ #else
290
+
291
+ #define ggml_int16x8x2_t int16x8x2_t
292
+ #define ggml_uint8x16x2_t uint8x16x2_t
293
+ #define ggml_uint8x16x4_t uint8x16x4_t
294
+ #define ggml_int8x16x2_t int8x16x2_t
295
+ #define ggml_int8x16x4_t int8x16x4_t
296
+
297
+ #define ggml_vld1q_s16_x2 vld1q_s16_x2
298
+ #define ggml_vld1q_u8_x2 vld1q_u8_x2
299
+ #define ggml_vld1q_u8_x4 vld1q_u8_x4
300
+ #define ggml_vld1q_s8_x2 vld1q_s8_x2
301
+ #define ggml_vld1q_s8_x4 vld1q_s8_x4
302
+ #define ggml_vqtbl1q_s8 vqtbl1q_s8
303
+ #define ggml_vqtbl1q_u8 vqtbl1q_u8
304
+
305
+ #endif // !defined(__aarch64__)
306
+
307
+ #if !defined(__ARM_FEATURE_DOTPROD)
308
+
309
+ // NOTE: this fallback produces the same total sum as native vdotq_s32 but with different per-lane grouping — do not use when individual lane values matter.
310
+ inline static int32x4_t ggml_vdotq_s32(int32x4_t acc, int8x16_t a, int8x16_t b) {
311
+ const int16x8_t p0 = vmull_s8(vget_low_s8 (a), vget_low_s8 (b));
312
+ const int16x8_t p1 = vmull_s8(vget_high_s8(a), vget_high_s8(b));
313
+
314
+ return vaddq_s32(acc, vaddq_s32(vpaddlq_s16(p0), vpaddlq_s16(p1)));
315
+ }
316
+
317
+ #else
318
+
319
+ #define ggml_vdotq_s32(a, b, c) vdotq_s32(a, b, c)
320
+
321
+ #endif // !defined(__ARM_FEATURE_DOTPROD)
322
+
323
+ static inline int32x4_t ggml_nvfp4_dot8(const int8x8_t q4_lo, const int8x8_t q8_lo,
324
+ const int8x8_t q4_hi, const int8x8_t q8_hi) {
325
+ const int16x8_t p_lo = vmull_s8(q4_lo, q8_lo);
326
+ const int16x8_t p_hi = vmull_s8(q4_hi, q8_hi);
327
+ const int32x4_t sum_lo = vpaddlq_s16(p_lo);
328
+ const int32x4_t sum_hi = vpaddlq_s16(p_hi);
329
+ return vaddq_s32(sum_lo, sum_hi);
330
+ }
331
+
332
+ #endif // defined(__ARM_NEON)
333
+
334
+ #ifdef __wasm_simd128__
335
+ #include <wasm_simd128.h>
336
+ #endif
337
+
338
+ #ifdef __POWER9_VECTOR__
339
+ #include <altivec.h>
340
+ #endif
341
+
342
+ #if defined(_MSC_VER) || defined(__MINGW32__)
343
+ #include <intrin.h>
344
+ #elif defined(__SSE__) || defined(__SSE3__) || defined(__SSSE3__) || defined(__AVX__) || defined(__F16C__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__AVX512BF16__)
345
+ #include <immintrin.h>
346
+ #endif
347
+
348
+ #ifdef __riscv_v_intrinsic
349
+ #include <riscv_vector.h>
350
+ #endif
351
+
352
+ #if defined(__loongarch64)
353
+ #if defined(__loongarch_asx)
354
+ #include <lasxintrin.h>
355
+ #endif
356
+ #if defined(__loongarch_sx)
357
+ #include <lsxintrin.h>
358
+ #endif
359
+ #endif
360
+
361
+ #if defined(__VXE__) || defined(__VXE2__)
362
+ #include <vecintrin.h>
363
+
364
+ #define vec_neg(a) (-(a)) // Vector Negate
365
+ #define vec_add(a, b) ((a) + (b)) // Vector Add
366
+ #define vec_sub(a, b) ((a) - (b)) // Vector Subtract
367
+ #define vec_mul(a, b) ((a) * (b)) // Vector Multiply
368
+ #define vec_div(a, b) ((a) / (b)) // Vector Divide
369
+ #define vec_sl(a, b) ((a) << (b)) // Vector Shift Left
370
+ #define vec_sra(a, b) ((a) >> (b)) // Vector Shift Right
371
+ #define vec_sr(a, b) ((a) >> (b)) // Vector Shift Right Algebraic
372
+ #define vec_slo(a, b) vec_slb(a, (b) << 64) // Vector Shift Left by Octet
373
+ #define vec_sro(a, b) vec_srb(a, (b) << 64) // Vector Shift Right by Octet
374
+
375
+ #ifndef vec_and
376
+ #define vec_and(a, b) ((a) & (b)) // Vector AND
377
+ #endif
378
+
379
+ #ifndef vec_or
380
+ #define vec_or(a, b) ((a) | (b)) // Vector OR
381
+ #endif
382
+
383
+ #ifndef vec_xor
384
+ #define vec_xor(a, b) ((a) ^ (b)) // Vector XOR
385
+ #endif
386
+
387
+ typedef signed char char8x16_t __attribute__((vector_size(16)));
388
+ typedef unsigned char uchar8x16_t __attribute__((vector_size(16)));
389
+
390
+ typedef int8_t int8x16_t __attribute__((vector_size(16)));
391
+ typedef int16_t int16x8_t __attribute__((vector_size(16)));
392
+ typedef int32_t int32x4_t __attribute__((vector_size(16)));
393
+
394
+ typedef uint8_t uint8x16_t __attribute__((vector_size(16)));
395
+ typedef uint16_t uint16x8_t __attribute__((vector_size(16)));
396
+ typedef uint32_t uint32x4_t __attribute__((vector_size(16)));
397
+
398
+ typedef float float32x4_t __attribute__((vector_size(16)));
399
+ typedef double double64x2_t __attribute__((vector_size(16)));
400
+
401
+ typedef signed long long long64x2_t __attribute__((vector_size(16)));
402
+ typedef unsigned long long ulong64x2_t __attribute__((vector_size(16)));
403
+
404
+ typedef struct ggml_uint8x16x2_t {
405
+ uint8x16_t val[2];
406
+ } ggml_uint8x16x2_t;
407
+
408
+ inline static ggml_uint8x16x2_t ggml_vec_xl_u8x2(const uint8_t * ptr) {
409
+ ggml_uint8x16x2_t res;
410
+
411
+ res.val[0] = vec_xl( 0, ptr);
412
+ res.val[1] = vec_xl(16, ptr);
413
+
414
+ return res;
415
+ }
416
+
417
+ typedef struct ggml_uint8x16x4_t {
418
+ uint8x16_t val[4];
419
+ } ggml_uint8x16x4_t;
420
+
421
+ inline static ggml_uint8x16x4_t ggml_vec_xl_u8x4(const uint8_t * ptr) {
422
+ ggml_uint8x16x4_t res;
423
+
424
+ res.val[0] = vec_xl( 0, ptr);
425
+ res.val[1] = vec_xl(16, ptr);
426
+ res.val[2] = vec_xl(32, ptr);
427
+ res.val[3] = vec_xl(48, ptr);
428
+
429
+ return res;
430
+ }
431
+
432
+ typedef struct ggml_int8x16x4_t {
433
+ int8x16_t val[4];
434
+ } ggml_int8x16x4_t;
435
+
436
+ inline static ggml_int8x16x4_t ggml_vec_xl_s8x4(const int8_t * ptr) {
437
+ ggml_int8x16x4_t res;
438
+
439
+ res.val[0] = vec_xl( 0, ptr);
440
+ res.val[1] = vec_xl(16, ptr);
441
+ res.val[2] = vec_xl(32, ptr);
442
+ res.val[3] = vec_xl(48, ptr);
443
+
444
+ return res;
445
+ }
446
+
447
+ typedef struct ggml_int16x8x2_t {
448
+ int16x8_t val[2];
449
+ } ggml_int16x8x2_t;
450
+
451
+ inline static ggml_int16x8x2_t ggml_vec_xl_s16x2(const int16_t * ptr) {
452
+ ggml_int16x8x2_t res;
453
+
454
+ res.val[0] = vec_xl( 0, ptr);
455
+ res.val[1] = vec_xl(16, ptr);
456
+
457
+ return res;
458
+ }
459
+
460
+ /*
461
+ ! WARNING: Very slow. Use vec_perm if possible. Refer to iq4_xs
462
+ ! or iq4_nl for example implementation.
463
+ */
464
+ inline static int8x16_t ggml_vec_tbl(int8x16_t a, uint8x16_t b) {
465
+ int8x16_t res;
466
+
467
+ res[ 0] = a[b[ 0]];
468
+ res[ 1] = a[b[ 1]];
469
+ res[ 2] = a[b[ 2]];
470
+ res[ 3] = a[b[ 3]];
471
+ res[ 4] = a[b[ 4]];
472
+ res[ 5] = a[b[ 5]];
473
+ res[ 6] = a[b[ 6]];
474
+ res[ 7] = a[b[ 7]];
475
+ res[ 8] = a[b[ 8]];
476
+ res[ 9] = a[b[ 9]];
477
+ res[10] = a[b[10]];
478
+ res[11] = a[b[11]];
479
+ res[12] = a[b[12]];
480
+ res[13] = a[b[13]];
481
+ res[14] = a[b[14]];
482
+ res[15] = a[b[15]];
483
+
484
+ return res;
485
+ }
486
+
487
+ inline static int16x8_t vec_padd_s16(int16x8_t a, int16x8_t b) {
488
+ const uchar8x16_t v_maske = { 0, 1, 4, 5, 8, 9, 12, 13,
489
+ 16, 17, 20, 21, 24, 25, 28, 29 };
490
+
491
+ const int16x8_t v_abo = vec_pack((int32x4_t)a, (int32x4_t)b);
492
+ const int16x8_t v_abe = vec_perm(a, b, v_maske);
493
+ return v_abo + v_abe;
494
+ }
495
+
496
+ /**
497
+ * @see https://github.com/ggml-org/llama.cpp/pull/14037
498
+ */
499
+ inline static float vec_hsum_f32x4(float32x4_t v) {
500
+ float32x4_t v_temp = v + vec_reve(v);
501
+ return v_temp[0] + v_temp[1];
502
+ }
503
+
504
+ inline static int32_t vec_hsum_i32x4(int32x4_t v) {
505
+ int32x4_t v_temp = v + vec_reve(v);
506
+ return v_temp[0] + v_temp[1];
507
+ }
508
+
509
+ inline static int32x4_t ggml_vec_dot(int32x4_t acc, int8x16_t a, int8x16_t b) {
510
+ const int16x8_t p = vec_mule(a, b) + vec_mulo(a, b);
511
+ return acc + (vec_unpackh(p) + vec_unpackl(p));
512
+ }
513
+
514
+ #endif
515
+
516
+ #if defined(__loongarch_sx)
517
+ /* float type data load instructions */
518
+ static __m128 __lsx_vreplfr2vr_s(const float val) {
519
+ v4f32 res = {val, val, val, val};
520
+ return (__m128)res;
521
+ }
522
+ #endif
523
+
524
+ #if defined(__loongarch_asx)
525
+ static __m256 __lasx_xvreplfr2vr_s(const float val) {
526
+ v8f32 res = {val, val, val, val, val, val, val, val};
527
+ return (__m256)res;
528
+ }
529
+ #endif
530
+
531
+ // TODO: move to ggml-threading
532
+ void ggml_barrier(struct ggml_threadpool * tp);
533
+
534
+ void ggml_threadpool_chunk_set(struct ggml_threadpool * tp, int value);
535
+ int ggml_threadpool_chunk_add(struct ggml_threadpool * tp, int value);
536
+
537
+ #ifdef __cplusplus
538
+ }
539
+ #endif