whispercpp 1.3.3 → 1.3.4

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 (586) hide show
  1. checksums.yaml +4 -4
  2. data/ext/ruby_whisper_params.c +55 -25
  3. data/ext/sources/CMakeLists.txt +1 -1
  4. data/ext/sources/bindings/javascript/package.json +1 -1
  5. data/ext/sources/build-xcframework.sh +24 -0
  6. data/ext/sources/examples/CMakeLists.txt +1 -0
  7. data/ext/sources/examples/addon.node/addon.cpp +19 -19
  8. data/ext/sources/examples/addon.node/index.js +7 -5
  9. data/ext/sources/examples/bench/bench.cpp +26 -16
  10. data/ext/sources/examples/bench.wasm/index-tmpl.html +10 -9
  11. data/ext/sources/examples/cli/cli.cpp +4 -2
  12. data/ext/sources/examples/command/command.cpp +26 -24
  13. data/ext/sources/examples/command.wasm/index-tmpl.html +5 -4
  14. data/ext/sources/examples/common-ggml.cpp +2 -0
  15. data/ext/sources/examples/lsp/lsp.cpp +19 -17
  16. data/ext/sources/examples/server/server.cpp +24 -13
  17. data/ext/sources/examples/server.py +6 -1
  18. data/ext/sources/examples/stream/stream.cpp +4 -2
  19. data/ext/sources/examples/stream.wasm/emscripten.cpp +6 -6
  20. data/ext/sources/examples/stream.wasm/index-tmpl.html +82 -5
  21. data/ext/sources/examples/talk-llama/CMakeLists.txt +2 -2
  22. data/ext/sources/examples/talk-llama/llama-adapter.cpp +101 -4
  23. data/ext/sources/examples/talk-llama/llama-adapter.h +6 -0
  24. data/ext/sources/examples/talk-llama/llama-arch.cpp +588 -15
  25. data/ext/sources/examples/talk-llama/llama-arch.h +58 -1
  26. data/ext/sources/examples/talk-llama/llama-batch.cpp +103 -71
  27. data/ext/sources/examples/talk-llama/llama-batch.h +31 -18
  28. data/ext/sources/examples/talk-llama/llama-chat.cpp +120 -5
  29. data/ext/sources/examples/talk-llama/llama-chat.h +7 -0
  30. data/ext/sources/examples/talk-llama/llama-context.cpp +460 -357
  31. data/ext/sources/examples/talk-llama/llama-context.h +44 -29
  32. data/ext/sources/examples/talk-llama/llama-cparams.h +4 -4
  33. data/ext/sources/examples/talk-llama/llama-graph.cpp +543 -271
  34. data/ext/sources/examples/talk-llama/llama-graph.h +278 -168
  35. data/ext/sources/examples/talk-llama/llama-hparams.cpp +118 -4
  36. data/ext/sources/examples/talk-llama/llama-hparams.h +61 -15
  37. data/ext/sources/examples/talk-llama/llama-impl.h +2 -0
  38. data/ext/sources/examples/talk-llama/llama-kv-cache-iswa.cpp +326 -0
  39. data/ext/sources/examples/talk-llama/{llama-kv-cache-unified-iswa.h → llama-kv-cache-iswa.h} +38 -29
  40. data/ext/sources/examples/talk-llama/llama-kv-cache.cpp +2020 -0
  41. data/ext/sources/examples/talk-llama/llama-kv-cache.h +358 -27
  42. data/ext/sources/examples/talk-llama/llama-kv-cells.h +80 -28
  43. data/ext/sources/examples/talk-llama/llama-memory-hybrid.cpp +56 -36
  44. data/ext/sources/examples/talk-llama/llama-memory-hybrid.h +30 -29
  45. data/ext/sources/examples/talk-llama/llama-memory-recurrent.cpp +48 -19
  46. data/ext/sources/examples/talk-llama/llama-memory-recurrent.h +13 -14
  47. data/ext/sources/examples/talk-llama/llama-memory.h +16 -10
  48. data/ext/sources/examples/talk-llama/llama-model-loader.cpp +2 -0
  49. data/ext/sources/examples/talk-llama/llama-model-loader.h +3 -2
  50. data/ext/sources/examples/talk-llama/llama-model.cpp +7165 -2336
  51. data/ext/sources/examples/talk-llama/llama-model.h +60 -9
  52. data/ext/sources/examples/talk-llama/llama-quant.cpp +48 -10
  53. data/ext/sources/examples/talk-llama/llama-sampling.cpp +226 -126
  54. data/ext/sources/examples/talk-llama/llama-vocab.cpp +440 -13
  55. data/ext/sources/examples/talk-llama/llama-vocab.h +45 -0
  56. data/ext/sources/examples/talk-llama/llama.cpp +65 -10
  57. data/ext/sources/examples/talk-llama/llama.h +95 -177
  58. data/ext/sources/examples/talk-llama/talk-llama.cpp +9 -6
  59. data/ext/sources/examples/talk-llama/unicode.cpp +207 -0
  60. data/ext/sources/examples/talk-llama/unicode.h +45 -0
  61. data/ext/sources/examples/wchess/wchess.cmd/wchess.cmd.cpp +4 -2
  62. data/ext/sources/examples/whisper.wasm/index-tmpl.html +17 -16
  63. data/ext/sources/ggml/CMakeLists.txt +59 -31
  64. data/ext/sources/ggml/cmake/ggml-config.cmake.in +132 -93
  65. data/ext/sources/ggml/include/ggml-backend.h +17 -1
  66. data/ext/sources/ggml/include/ggml-cpu.h +1 -1
  67. data/ext/sources/ggml/include/ggml-metal.h +1 -6
  68. data/ext/sources/ggml/include/ggml-opt.h +25 -6
  69. data/ext/sources/ggml/include/ggml-webgpu.h +19 -0
  70. data/ext/sources/ggml/include/ggml-zdnn.h +17 -0
  71. data/ext/sources/ggml/include/ggml.h +221 -16
  72. data/ext/sources/ggml/src/CMakeLists.txt +17 -2
  73. data/ext/sources/ggml/src/ggml-alloc.c +265 -141
  74. data/ext/sources/ggml/src/ggml-backend-impl.h +4 -1
  75. data/ext/sources/ggml/src/ggml-backend-reg.cpp +30 -13
  76. data/ext/sources/ggml/src/ggml-backend.cpp +221 -38
  77. data/ext/sources/ggml/src/ggml-blas/CMakeLists.txt +1 -1
  78. data/ext/sources/ggml/src/ggml-blas/ggml-blas.cpp +5 -4
  79. data/ext/sources/ggml/src/ggml-cann/CMakeLists.txt +14 -0
  80. data/ext/sources/ggml/src/ggml-cann/acl_tensor.cpp +3 -1
  81. data/ext/sources/ggml/src/ggml-cann/aclnn_ops.cpp +903 -717
  82. data/ext/sources/ggml/src/ggml-cann/aclnn_ops.h +143 -25
  83. data/ext/sources/ggml/src/ggml-cann/common.h +143 -1
  84. data/ext/sources/ggml/src/ggml-cann/ggml-cann.cpp +488 -69
  85. data/ext/sources/ggml/src/ggml-common.h +17 -0
  86. data/ext/sources/ggml/src/ggml-cpu/CMakeLists.txt +40 -18
  87. data/ext/sources/ggml/src/ggml-cpu/amx/amx.cpp +4 -2
  88. data/ext/sources/ggml/src/ggml-cpu/arch/arm/quants.c +132 -596
  89. data/ext/sources/ggml/src/ggml-cpu/arch/arm/repack.cpp +14 -286
  90. data/ext/sources/ggml/src/ggml-cpu/arch/loongarch/quants.c +103 -582
  91. data/ext/sources/ggml/src/ggml-cpu/arch/powerpc/quants.c +162 -589
  92. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/quants.c +265 -437
  93. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/repack.cpp +3 -58
  94. data/ext/sources/ggml/src/ggml-cpu/arch/s390/quants.c +521 -353
  95. data/ext/sources/ggml/src/ggml-cpu/arch/wasm/quants.c +54 -314
  96. data/ext/sources/ggml/src/ggml-cpu/arch/x86/quants.c +184 -675
  97. data/ext/sources/ggml/src/ggml-cpu/arch/x86/repack.cpp +4679 -1657
  98. data/ext/sources/ggml/src/ggml-cpu/arch-fallback.h +32 -2
  99. data/ext/sources/ggml/src/ggml-cpu/common.h +14 -0
  100. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu-impl.h +13 -6
  101. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.c +70 -42
  102. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.cpp +35 -28
  103. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.cpp +152 -18
  104. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.h +7 -1
  105. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +227 -97
  106. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.cpp +474 -1116
  107. data/ext/sources/ggml/src/ggml-cpu/ops.cpp +1587 -1177
  108. data/ext/sources/ggml/src/ggml-cpu/ops.h +5 -8
  109. data/ext/sources/ggml/src/ggml-cpu/quants.c +35 -0
  110. data/ext/sources/ggml/src/ggml-cpu/quants.h +8 -0
  111. data/ext/sources/ggml/src/ggml-cpu/repack.cpp +458 -47
  112. data/ext/sources/ggml/src/ggml-cpu/repack.h +22 -0
  113. data/ext/sources/ggml/src/ggml-cpu/simd-mappings.h +89 -60
  114. data/ext/sources/ggml/src/ggml-cpu/spacemit/ime.cpp +1024 -0
  115. data/ext/sources/ggml/src/ggml-cpu/spacemit/ime.h +13 -0
  116. data/ext/sources/ggml/src/ggml-cpu/spacemit/ime1_kernels.cpp +3196 -0
  117. data/ext/sources/ggml/src/ggml-cpu/spacemit/ime_kernels.h +26 -0
  118. data/ext/sources/ggml/src/ggml-cpu/traits.cpp +2 -2
  119. data/ext/sources/ggml/src/ggml-cpu/traits.h +1 -1
  120. data/ext/sources/ggml/src/ggml-cpu/vec.cpp +170 -26
  121. data/ext/sources/ggml/src/ggml-cpu/vec.h +506 -63
  122. data/ext/sources/ggml/src/ggml-cuda/CMakeLists.txt +20 -16
  123. data/ext/sources/ggml/src/ggml-cuda/add-id.cu +58 -0
  124. data/ext/sources/ggml/src/ggml-cuda/add-id.cuh +3 -0
  125. data/ext/sources/ggml/src/ggml-cuda/binbcast.cu +330 -191
  126. data/ext/sources/ggml/src/ggml-cuda/binbcast.cuh +2 -0
  127. data/ext/sources/ggml/src/ggml-cuda/common.cuh +250 -63
  128. data/ext/sources/ggml/src/ggml-cuda/conv-transpose-1d.cu +1 -4
  129. data/ext/sources/ggml/src/ggml-cuda/conv2d.cu +166 -0
  130. data/ext/sources/ggml/src/ggml-cuda/conv2d.cuh +5 -0
  131. data/ext/sources/ggml/src/ggml-cuda/convert.cu +95 -22
  132. data/ext/sources/ggml/src/ggml-cuda/convert.cuh +15 -0
  133. data/ext/sources/ggml/src/ggml-cuda/cpy-utils.cuh +217 -0
  134. data/ext/sources/ggml/src/ggml-cuda/cpy.cu +64 -307
  135. data/ext/sources/ggml/src/ggml-cuda/cross-entropy-loss.cu +2 -14
  136. data/ext/sources/ggml/src/ggml-cuda/dequantize.cuh +14 -40
  137. data/ext/sources/ggml/src/ggml-cuda/fattn-common.cuh +498 -367
  138. data/ext/sources/ggml/src/ggml-cuda/fattn-mma-f16.cuh +137 -91
  139. data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cu +755 -0
  140. data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cuh +3 -0
  141. data/ext/sources/ggml/src/ggml-cuda/fattn-vec.cuh +593 -0
  142. data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cu +86 -50
  143. data/ext/sources/ggml/src/ggml-cuda/fattn.cu +185 -198
  144. data/ext/sources/ggml/src/ggml-cuda/fattn.cuh +2 -0
  145. data/ext/sources/ggml/src/ggml-cuda/getrows.cu +50 -39
  146. data/ext/sources/ggml/src/ggml-cuda/ggml-cuda.cu +379 -107
  147. data/ext/sources/ggml/src/ggml-cuda/im2col.cu +196 -35
  148. data/ext/sources/ggml/src/ggml-cuda/im2col.cuh +1 -0
  149. data/ext/sources/ggml/src/ggml-cuda/mean.cu +56 -2
  150. data/ext/sources/ggml/src/ggml-cuda/mma.cuh +198 -45
  151. data/ext/sources/ggml/src/ggml-cuda/mmf.cu +123 -0
  152. data/ext/sources/ggml/src/ggml-cuda/mmf.cuh +496 -0
  153. data/ext/sources/ggml/src/ggml-cuda/mmq.cu +206 -57
  154. data/ext/sources/ggml/src/ggml-cuda/mmq.cuh +1262 -721
  155. data/ext/sources/ggml/src/ggml-cuda/{mmv.cu → mmvf.cu} +53 -53
  156. data/ext/sources/ggml/src/ggml-cuda/{mmv.cuh → mmvf.cuh} +3 -3
  157. data/ext/sources/ggml/src/ggml-cuda/mmvq.cu +64 -73
  158. data/ext/sources/ggml/src/ggml-cuda/norm.cu +284 -12
  159. data/ext/sources/ggml/src/ggml-cuda/norm.cuh +7 -0
  160. data/ext/sources/ggml/src/ggml-cuda/opt-step-sgd.cu +49 -0
  161. data/ext/sources/ggml/src/ggml-cuda/opt-step-sgd.cuh +5 -0
  162. data/ext/sources/ggml/src/ggml-cuda/pad.cu +46 -23
  163. data/ext/sources/ggml/src/ggml-cuda/pad_reflect_1d.cu +91 -0
  164. data/ext/sources/ggml/src/ggml-cuda/pad_reflect_1d.cuh +5 -0
  165. data/ext/sources/ggml/src/ggml-cuda/quantize.cu +12 -10
  166. data/ext/sources/ggml/src/ggml-cuda/reduce_rows.cuh +53 -0
  167. data/ext/sources/ggml/src/ggml-cuda/roll.cu +67 -0
  168. data/ext/sources/ggml/src/ggml-cuda/roll.cuh +5 -0
  169. data/ext/sources/ggml/src/ggml-cuda/rope.cu +21 -27
  170. data/ext/sources/ggml/src/ggml-cuda/scale.cu +14 -11
  171. data/ext/sources/ggml/src/ggml-cuda/set-rows.cu +276 -0
  172. data/ext/sources/ggml/src/ggml-cuda/set-rows.cuh +7 -0
  173. data/ext/sources/ggml/src/ggml-cuda/softcap.cu +34 -0
  174. data/ext/sources/ggml/src/ggml-cuda/softcap.cuh +5 -0
  175. data/ext/sources/ggml/src/ggml-cuda/softmax.cu +126 -59
  176. data/ext/sources/ggml/src/ggml-cuda/ssm-conv.cu +10 -2
  177. data/ext/sources/ggml/src/ggml-cuda/ssm-scan.cu +322 -100
  178. data/ext/sources/ggml/src/ggml-cuda/sum.cu +6 -10
  179. data/ext/sources/ggml/src/ggml-cuda/sumrows.cu +21 -4
  180. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-f16.cu +7 -0
  181. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q4_0.cu +7 -0
  182. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q4_1.cu +7 -0
  183. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q5_0.cu +7 -0
  184. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q5_1.cu +7 -0
  185. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-f16-q8_0.cu +7 -0
  186. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-f16.cu +7 -0
  187. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q4_0.cu +7 -0
  188. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q4_1.cu +7 -0
  189. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q5_0.cu +7 -0
  190. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q5_1.cu +7 -0
  191. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_0-q8_0.cu +7 -0
  192. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-f16.cu +7 -0
  193. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q4_0.cu +7 -0
  194. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q4_1.cu +7 -0
  195. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q5_0.cu +7 -0
  196. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q5_1.cu +7 -0
  197. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q4_1-q8_0.cu +7 -0
  198. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-f16.cu +7 -0
  199. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q4_0.cu +7 -0
  200. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q4_1.cu +7 -0
  201. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q5_0.cu +7 -0
  202. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q5_1.cu +7 -0
  203. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_0-q8_0.cu +7 -0
  204. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-f16.cu +7 -0
  205. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q4_0.cu +7 -0
  206. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q4_1.cu +7 -0
  207. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q5_0.cu +7 -0
  208. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q5_1.cu +7 -0
  209. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q5_1-q8_0.cu +7 -0
  210. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-f16.cu +7 -0
  211. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q4_0.cu +7 -0
  212. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q4_1.cu +7 -0
  213. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q5_0.cu +7 -0
  214. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q5_1.cu +7 -0
  215. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-instance-q8_0-q8_0.cu +7 -0
  216. data/ext/sources/ggml/src/ggml-cuda/template-instances/generate_cu_files.py +21 -18
  217. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_1.cu +5 -0
  218. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_10.cu +5 -0
  219. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_11.cu +5 -0
  220. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_12.cu +5 -0
  221. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_13.cu +5 -0
  222. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_14.cu +5 -0
  223. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_15.cu +5 -0
  224. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_16.cu +5 -0
  225. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_2.cu +5 -0
  226. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_3.cu +5 -0
  227. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_4.cu +5 -0
  228. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_5.cu +5 -0
  229. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_6.cu +5 -0
  230. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_7.cu +5 -0
  231. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_8.cu +5 -0
  232. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmf-instance-ncols_9.cu +5 -0
  233. data/ext/sources/ggml/src/ggml-cuda/template-instances/mmq-instance-mxfp4.cu +5 -0
  234. data/ext/sources/ggml/src/ggml-cuda/topk-moe.cu +259 -0
  235. data/ext/sources/ggml/src/ggml-cuda/topk-moe.cuh +14 -0
  236. data/ext/sources/ggml/src/ggml-cuda/tsembd.cu +3 -3
  237. data/ext/sources/ggml/src/ggml-cuda/unary.cu +90 -0
  238. data/ext/sources/ggml/src/ggml-cuda/unary.cuh +8 -0
  239. data/ext/sources/ggml/src/ggml-cuda/upscale.cu +92 -6
  240. data/ext/sources/ggml/src/ggml-cuda/vecdotq.cuh +110 -22
  241. data/ext/sources/ggml/src/ggml-cuda/vendors/cuda.h +4 -0
  242. data/ext/sources/ggml/src/ggml-cuda/vendors/hip.h +58 -36
  243. data/ext/sources/ggml/src/ggml-cuda/vendors/musa.h +4 -3
  244. data/ext/sources/ggml/src/ggml-hip/CMakeLists.txt +10 -2
  245. data/ext/sources/ggml/src/ggml-impl.h +119 -9
  246. data/ext/sources/ggml/src/ggml-metal/CMakeLists.txt +10 -7
  247. data/ext/sources/ggml/src/ggml-metal/ggml-metal-common.cpp +446 -0
  248. data/ext/sources/ggml/src/ggml-metal/ggml-metal-common.h +52 -0
  249. data/ext/sources/ggml/src/ggml-metal/ggml-metal-context.h +33 -0
  250. data/ext/sources/ggml/src/ggml-metal/ggml-metal-context.m +600 -0
  251. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.cpp +1376 -0
  252. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.h +226 -0
  253. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.m +1308 -0
  254. data/ext/sources/ggml/src/ggml-metal/ggml-metal-impl.h +136 -63
  255. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.cpp +3158 -0
  256. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.h +82 -0
  257. data/ext/sources/ggml/src/ggml-metal/ggml-metal.cpp +718 -0
  258. data/ext/sources/ggml/src/ggml-metal/ggml-metal.metal +2854 -1503
  259. data/ext/sources/ggml/src/ggml-musa/CMakeLists.txt +18 -8
  260. data/ext/sources/ggml/src/ggml-opencl/CMakeLists.txt +18 -0
  261. data/ext/sources/ggml/src/ggml-opencl/ggml-opencl.cpp +2510 -242
  262. data/ext/sources/ggml/src/ggml-opencl/kernels/add.cl +107 -0
  263. data/ext/sources/ggml/src/ggml-opencl/kernels/add_id.cl +42 -0
  264. data/ext/sources/ggml/src/ggml-opencl/kernels/conv2d.cl +185 -0
  265. data/ext/sources/ggml/src/ggml-opencl/kernels/conv2d_f16_f32.cl +176 -0
  266. data/ext/sources/ggml/src/ggml-opencl/kernels/cvt.cl +84 -0
  267. data/ext/sources/ggml/src/ggml-opencl/kernels/div.cl +66 -0
  268. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f16.cl +370 -0
  269. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32.cl +370 -0
  270. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32_f16.cl +373 -0
  271. data/ext/sources/ggml/src/ggml-opencl/kernels/gelu.cl +27 -0
  272. data/ext/sources/ggml/src/ggml-opencl/kernels/glu.cl +177 -0
  273. data/ext/sources/ggml/src/ggml-opencl/kernels/group_norm.cl +49 -0
  274. data/ext/sources/ggml/src/ggml-opencl/kernels/im2col_f16.cl +1 -1
  275. data/ext/sources/ggml/src/ggml-opencl/kernels/im2col_f32.cl +1 -1
  276. data/ext/sources/ggml/src/ggml-opencl/kernels/mul.cl +73 -0
  277. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mat_f16_f32.cl +130 -0
  278. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_l4_lm.cl +132 -0
  279. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f32_f32_l4_lm.cl +133 -0
  280. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32.cl +189 -0
  281. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_id_mxfp4_f32_flat.cl +176 -0
  282. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32.cl +140 -0
  283. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_id_q8_0_f32_flat.cl +222 -0
  284. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_mxfp4_f32.cl +144 -0
  285. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_mxfp4_f32_flat.cl +167 -0
  286. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q8_0_f32.cl +125 -0
  287. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q8_0_f32_flat.cl +202 -0
  288. data/ext/sources/ggml/src/ggml-opencl/kernels/norm.cl +80 -0
  289. data/ext/sources/ggml/src/ggml-opencl/kernels/rms_norm.cl +79 -0
  290. data/ext/sources/ggml/src/ggml-opencl/kernels/scale.cl +3 -2
  291. data/ext/sources/ggml/src/ggml-opencl/kernels/set_rows.cl +189 -0
  292. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_4_f16.cl +34 -13
  293. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_4_f32.cl +34 -13
  294. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_f16.cl +34 -13
  295. data/ext/sources/ggml/src/ggml-opencl/kernels/softmax_f32.cl +34 -13
  296. data/ext/sources/ggml/src/ggml-opencl/kernels/sub.cl +66 -0
  297. data/ext/sources/ggml/src/ggml-opencl/kernels/transpose.cl +20 -0
  298. data/ext/sources/ggml/src/ggml-opencl/kernels/tsembd.cl +2 -2
  299. data/ext/sources/ggml/src/ggml-opencl/kernels/upscale.cl +2 -3
  300. data/ext/sources/ggml/src/ggml-opt.cpp +97 -41
  301. data/ext/sources/ggml/src/ggml-quants.c +111 -16
  302. data/ext/sources/ggml/src/ggml-quants.h +6 -0
  303. data/ext/sources/ggml/src/ggml-rpc/ggml-rpc.cpp +67 -47
  304. data/ext/sources/ggml/src/ggml-sycl/backend.hpp +2 -0
  305. data/ext/sources/ggml/src/ggml-sycl/binbcast.cpp +15 -5
  306. data/ext/sources/ggml/src/ggml-sycl/binbcast.hpp +6 -0
  307. data/ext/sources/ggml/src/ggml-sycl/concat.cpp +25 -16
  308. data/ext/sources/ggml/src/ggml-sycl/conv.cpp +10 -4
  309. data/ext/sources/ggml/src/ggml-sycl/convert.cpp +166 -99
  310. data/ext/sources/ggml/src/ggml-sycl/cpy.cpp +72 -306
  311. data/ext/sources/ggml/src/ggml-sycl/cpy.hpp +213 -1
  312. data/ext/sources/ggml/src/ggml-sycl/dmmv.cpp +67 -49
  313. data/ext/sources/ggml/src/ggml-sycl/dpct/helper.hpp +1 -31
  314. data/ext/sources/ggml/src/ggml-sycl/element_wise.cpp +79 -29
  315. data/ext/sources/ggml/src/ggml-sycl/element_wise.hpp +2 -0
  316. data/ext/sources/ggml/src/ggml-sycl/gemm.hpp +14 -26
  317. data/ext/sources/ggml/src/ggml-sycl/getrows.cpp +9 -6
  318. data/ext/sources/ggml/src/ggml-sycl/ggml-sycl.cpp +328 -323
  319. data/ext/sources/ggml/src/ggml-sycl/gla.cpp +2 -2
  320. data/ext/sources/ggml/src/ggml-sycl/im2col.cpp +2 -2
  321. data/ext/sources/ggml/src/ggml-sycl/mmq.cpp +80 -60
  322. data/ext/sources/ggml/src/ggml-sycl/mmvq.cpp +201 -132
  323. data/ext/sources/ggml/src/ggml-sycl/norm.cpp +74 -55
  324. data/ext/sources/ggml/src/ggml-sycl/quantize.hpp +133 -0
  325. data/ext/sources/ggml/src/ggml-sycl/quants.hpp +8 -9
  326. data/ext/sources/ggml/src/ggml-sycl/rope.cpp +35 -42
  327. data/ext/sources/ggml/src/ggml-sycl/set_rows.cpp +234 -0
  328. data/ext/sources/ggml/src/ggml-sycl/set_rows.hpp +8 -0
  329. data/ext/sources/ggml/src/ggml-sycl/softmax.cpp +3 -3
  330. data/ext/sources/ggml/src/ggml-sycl/tsembd.cpp +12 -6
  331. data/ext/sources/ggml/src/ggml-sycl/vecdotq.hpp +2 -6
  332. data/ext/sources/ggml/src/ggml-sycl/wkv.cpp +16 -12
  333. data/ext/sources/ggml/src/ggml-vulkan/ggml-vulkan.cpp +3492 -883
  334. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add.comp +41 -1
  335. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add_id.comp +42 -0
  336. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argmax.comp +13 -4
  337. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort.comp +39 -29
  338. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_mm.comp +349 -0
  339. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp +2 -2
  340. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +66 -12
  341. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.comp +154 -0
  342. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.comp +21 -0
  343. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_s.comp +1 -1
  344. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xxs.comp +2 -1
  345. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_s.comp +6 -5
  346. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_xxs.comp +4 -2
  347. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_mxfp4.comp +32 -0
  348. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q2_k.comp +1 -1
  349. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q3_k.comp +1 -1
  350. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_k.comp +1 -1
  351. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_k.comp +1 -1
  352. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q6_k.comp +1 -1
  353. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/exp.comp +21 -0
  354. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn.comp +69 -24
  355. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.comp +60 -20
  356. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +98 -42
  357. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm2.comp +64 -27
  358. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_split_k_reduce.comp +74 -13
  359. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_erf.comp +27 -0
  360. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_quick.comp +11 -0
  361. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_erf.comp +39 -0
  362. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/generic_binary_head.comp +4 -17
  363. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows.comp +19 -10
  364. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows_quant.comp +25 -15
  365. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.comp +4 -0
  366. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardsigmoid.comp +22 -0
  367. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardswish.comp +22 -0
  368. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col.comp +18 -14
  369. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col_3d.comp +126 -0
  370. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_base.comp +65 -1
  371. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_nc.comp +11 -7
  372. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq.comp +140 -0
  373. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp +144 -531
  374. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +206 -38
  375. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_funcs.comp +556 -0
  376. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq.comp +12 -5
  377. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.comp +15 -9
  378. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/multi_add.comp +111 -0
  379. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_sgd.comp +22 -0
  380. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pad.comp +24 -3
  381. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/quantize_q8_1.comp +53 -3
  382. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm.comp +55 -11
  383. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_partials.comp +65 -0
  384. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/roll.comp +46 -0
  385. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.comp +1 -4
  386. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_multi.comp +7 -9
  387. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_neox.comp +7 -9
  388. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_norm.comp +7 -9
  389. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rte.comp +5 -0
  390. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/scale.comp +1 -1
  391. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp +29 -7
  392. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_back.comp +4 -0
  393. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sqrt.comp +17 -0
  394. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.comp +38 -5
  395. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp +14 -0
  396. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/timestep_embedding.comp +4 -3
  397. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/types.comp +101 -9
  398. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/upscale.comp +69 -5
  399. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/utils.comp +25 -0
  400. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +335 -77
  401. data/ext/sources/ggml/src/ggml-webgpu/CMakeLists.txt +54 -0
  402. data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu.cpp +1558 -0
  403. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add.tmpl.wgsl +44 -0
  404. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add_in_place.tmpl.wgsl +41 -0
  405. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/binary_head.tmpl +45 -0
  406. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/common_decls.tmpl +930 -0
  407. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/cpy.wgsl +60 -0
  408. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/embed_wgsl.py +124 -0
  409. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/get_rows.tmpl.wgsl +874 -0
  410. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/memset.wgsl +40 -0
  411. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul.tmpl.wgsl +44 -0
  412. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_in_place.tmpl.wgsl +41 -0
  413. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat.tmpl.wgsl +907 -0
  414. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm.wgsl +57 -0
  415. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm_in_place.wgsl +48 -0
  416. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/set_rows.wgsl +81 -0
  417. data/ext/sources/ggml/src/ggml-zdnn/CMakeLists.txt +36 -0
  418. data/ext/sources/ggml/src/ggml-zdnn/common.hpp +59 -0
  419. data/ext/sources/ggml/src/ggml-zdnn/ggml-zdnn.cpp +628 -0
  420. data/ext/sources/ggml/src/ggml-zdnn/mmf.cpp +80 -0
  421. data/ext/sources/ggml/src/ggml-zdnn/mmf.hpp +12 -0
  422. data/ext/sources/ggml/src/ggml-zdnn/utils.cpp +79 -0
  423. data/ext/sources/ggml/src/ggml-zdnn/utils.hpp +19 -0
  424. data/ext/sources/ggml/src/ggml.c +478 -98
  425. data/ext/sources/ggml/src/gguf.cpp +8 -1
  426. data/ext/sources/src/whisper.cpp +23 -46
  427. data/ext/sources/tests/CMakeLists.txt +8 -1
  428. data/ext/sources/tests/test-vad-full.cpp +3 -3
  429. data/ext/sources/tests/test-vad.cpp +2 -2
  430. data/lib/whisper/model/uri.rb +1 -1
  431. data/sig/whisper.rbs +7 -0
  432. data/test/test_params.rb +8 -0
  433. data/test/test_whisper.rb +1 -1
  434. data/whispercpp.gemspec +1 -1
  435. metadata +164 -157
  436. data/ext/sources/examples/talk-llama/llama-kv-cache-unified-iswa.cpp +0 -279
  437. data/ext/sources/examples/talk-llama/llama-kv-cache-unified.cpp +0 -1841
  438. data/ext/sources/examples/talk-llama/llama-kv-cache-unified.h +0 -303
  439. data/ext/sources/ggml/include/ggml-kompute.h +0 -50
  440. data/ext/sources/ggml/src/ggml-amx/CMakeLists.txt +0 -107
  441. data/ext/sources/ggml/src/ggml-amx/common.h +0 -94
  442. data/ext/sources/ggml/src/ggml-amx/ggml-amx.cpp +0 -446
  443. data/ext/sources/ggml/src/ggml-amx/mmq.cpp +0 -2510
  444. data/ext/sources/ggml/src/ggml-amx/mmq.h +0 -17
  445. data/ext/sources/ggml/src/ggml-cann/kernels/CMakeLists.txt +0 -30
  446. data/ext/sources/ggml/src/ggml-cann/kernels/ascendc_kernels.h +0 -19
  447. data/ext/sources/ggml/src/ggml-cann/kernels/dup.cpp +0 -234
  448. data/ext/sources/ggml/src/ggml-cann/kernels/get_row_f16.cpp +0 -197
  449. data/ext/sources/ggml/src/ggml-cann/kernels/get_row_f32.cpp +0 -190
  450. data/ext/sources/ggml/src/ggml-cann/kernels/get_row_q4_0.cpp +0 -204
  451. data/ext/sources/ggml/src/ggml-cann/kernels/get_row_q8_0.cpp +0 -191
  452. data/ext/sources/ggml/src/ggml-cann/kernels/quantize_f16_q8_0.cpp +0 -218
  453. data/ext/sources/ggml/src/ggml-cann/kernels/quantize_f32_q8_0.cpp +0 -216
  454. data/ext/sources/ggml/src/ggml-cann/kernels/quantize_float_to_q4_0.cpp +0 -295
  455. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f16.cu +0 -357
  456. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f16.cuh +0 -3
  457. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f32.cu +0 -365
  458. data/ext/sources/ggml/src/ggml-cuda/fattn-tile-f32.cuh +0 -3
  459. data/ext/sources/ggml/src/ggml-cuda/fattn-vec-f16.cuh +0 -482
  460. data/ext/sources/ggml/src/ggml-cuda/fattn-vec-f32.cuh +0 -472
  461. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-f16.cu +0 -5
  462. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_0.cu +0 -5
  463. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_1.cu +0 -5
  464. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_0.cu +0 -5
  465. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_1.cu +0 -5
  466. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q8_0.cu +0 -5
  467. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-f16.cu +0 -5
  468. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_0.cu +0 -5
  469. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_1.cu +0 -5
  470. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_0.cu +0 -5
  471. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_1.cu +0 -5
  472. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q8_0.cu +0 -5
  473. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-f16.cu +0 -5
  474. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_0.cu +0 -5
  475. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_1.cu +0 -5
  476. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_0.cu +0 -5
  477. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_1.cu +0 -5
  478. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q8_0.cu +0 -5
  479. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-f16.cu +0 -5
  480. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_0.cu +0 -5
  481. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_1.cu +0 -5
  482. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_0.cu +0 -5
  483. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_1.cu +0 -5
  484. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q8_0.cu +0 -5
  485. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-f16.cu +0 -5
  486. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_0.cu +0 -5
  487. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_1.cu +0 -5
  488. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_0.cu +0 -5
  489. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_1.cu +0 -5
  490. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q8_0.cu +0 -5
  491. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-f16.cu +0 -5
  492. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_0.cu +0 -5
  493. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_1.cu +0 -5
  494. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_0.cu +0 -5
  495. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_1.cu +0 -5
  496. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q8_0.cu +0 -5
  497. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs256-f16-f16.cu +0 -5
  498. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-f16.cu +0 -5
  499. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_0.cu +0 -5
  500. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_1.cu +0 -5
  501. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_0.cu +0 -5
  502. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_1.cu +0 -5
  503. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q8_0.cu +0 -5
  504. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-f16.cu +0 -5
  505. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_0.cu +0 -5
  506. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_1.cu +0 -5
  507. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_0.cu +0 -5
  508. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_1.cu +0 -5
  509. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q8_0.cu +0 -5
  510. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-f16.cu +0 -5
  511. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_0.cu +0 -5
  512. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_1.cu +0 -5
  513. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_0.cu +0 -5
  514. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_1.cu +0 -5
  515. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q8_0.cu +0 -5
  516. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-f16.cu +0 -5
  517. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_0.cu +0 -5
  518. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_1.cu +0 -5
  519. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_0.cu +0 -5
  520. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_1.cu +0 -5
  521. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q8_0.cu +0 -5
  522. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-f16.cu +0 -5
  523. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_0.cu +0 -5
  524. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_1.cu +0 -5
  525. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_0.cu +0 -5
  526. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_1.cu +0 -5
  527. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q8_0.cu +0 -5
  528. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-f16.cu +0 -5
  529. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_0.cu +0 -5
  530. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_1.cu +0 -5
  531. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_0.cu +0 -5
  532. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_1.cu +0 -5
  533. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q8_0.cu +0 -5
  534. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-f16.cu +0 -5
  535. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_0.cu +0 -5
  536. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_1.cu +0 -5
  537. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_0.cu +0 -5
  538. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_1.cu +0 -5
  539. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q8_0.cu +0 -5
  540. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs256-f16-f16.cu +0 -5
  541. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-f16.cu +0 -5
  542. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_0.cu +0 -5
  543. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_1.cu +0 -5
  544. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_0.cu +0 -5
  545. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_1.cu +0 -5
  546. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q8_0.cu +0 -5
  547. data/ext/sources/ggml/src/ggml-kompute/CMakeLists.txt +0 -166
  548. data/ext/sources/ggml/src/ggml-kompute/ggml-kompute.cpp +0 -2251
  549. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/common.comp +0 -112
  550. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_add.comp +0 -58
  551. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_addrow.comp +0 -25
  552. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f16_f16.comp +0 -52
  553. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f16_f32.comp +0 -52
  554. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f32_f16.comp +0 -52
  555. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_cpy_f32_f32.comp +0 -52
  556. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_diagmask.comp +0 -30
  557. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_gelu.comp +0 -22
  558. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows.comp +0 -17
  559. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_f16.comp +0 -31
  560. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_f32.comp +0 -31
  561. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q4_0.comp +0 -38
  562. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q4_1.comp +0 -39
  563. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_getrows_q6_k.comp +0 -44
  564. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul.comp +0 -52
  565. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_f16.comp +0 -69
  566. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_mat_f32.comp +0 -51
  567. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_0.comp +0 -33
  568. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_1.comp +0 -35
  569. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q4_k.comp +0 -140
  570. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q6_k.comp +0 -106
  571. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mat_q8_0.comp +0 -73
  572. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mv_q_n.comp +0 -52
  573. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_mul_mv_q_n_pre.comp +0 -28
  574. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_norm.comp +0 -84
  575. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_relu.comp +0 -21
  576. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rmsnorm.comp +0 -53
  577. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_neox_f16.comp +0 -52
  578. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_neox_f32.comp +0 -52
  579. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_norm_f16.comp +0 -52
  580. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_rope_norm_f32.comp +0 -52
  581. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_scale.comp +0 -19
  582. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_scale_8.comp +0 -23
  583. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_silu.comp +0 -22
  584. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/op_softmax.comp +0 -72
  585. data/ext/sources/ggml/src/ggml-kompute/kompute-shaders/rope_common.comp +0 -71
  586. data/ext/sources/ggml/src/ggml-metal/ggml-metal.m +0 -6280
@@ -1,17 +0,0 @@
1
- #pragma once
2
- #include "common.h"
3
- #include <stdint.h>
4
-
5
- #ifdef __cplusplus
6
- extern "C" {
7
- #endif
8
-
9
- size_t ggml_backend_amx_get_alloc_size(const struct ggml_tensor * tensor);
10
-
11
- void ggml_backend_amx_convert_weight(struct ggml_tensor * tensor, const void * data, size_t offset, size_t size);
12
-
13
- void ggml_backend_amx_mul_mat(ggml_backend_amx_context * ctx, struct ggml_tensor * dst);
14
-
15
- #ifdef __cplusplus
16
- }
17
- #endif
@@ -1,30 +0,0 @@
1
- file(GLOB SRC_FILES
2
- get_row_f32.cpp
3
- get_row_f16.cpp
4
- get_row_q4_0.cpp
5
- get_row_q8_0.cpp
6
- quantize_f32_q8_0.cpp
7
- quantize_f16_q8_0.cpp
8
- quantize_float_to_q4_0.cpp
9
- dup.cpp
10
- )
11
-
12
- set(ASCEND_CANN_PACKAGE_PATH ${CANN_INSTALL_DIR})
13
- set(RUN_MODE "npu" CACHE STRING "run mode: npu/sim")
14
-
15
- if(EXISTS ${ASCEND_CANN_PACKAGE_PATH}/compiler/tikcpp/ascendc_kernel_cmake)
16
- set(ASCENDC_CMAKE_DIR ${ASCEND_CANN_PACKAGE_PATH}/compiler/tikcpp/ascendc_kernel_cmake)
17
- elseif(EXISTS ${ASCEND_CANN_PACKAGE_PATH}/ascendc_devkit/tikcpp/samples/cmake)
18
- set(ASCENDC_CMAKE_DIR ${ASCEND_CANN_PACKAGE_PATH}/ascendc_devkit/tikcpp/samples/cmake)
19
- else()
20
- message(FATAL_ERROR "ascendc_kernel_cmake does not exist, please check whether the compiler package is installed.")
21
- endif()
22
- include(${ASCENDC_CMAKE_DIR}/ascendc.cmake)
23
-
24
- ascendc_library(ascendc_kernels STATIC
25
- ${SRC_FILES}
26
- )
27
-
28
- message(STATUS "CANN: compile ascend kernels witch SOC_TYPE:${SOC_TYPE}, SOC_VERSION:${SOC_VERSION}, compile macro:-D${SOC_TYPE_COMPILE_OPTION}.")
29
- ascendc_compile_definitions(ascendc_kernels PRIVATE "-D${SOC_TYPE_COMPILE_OPTION}")
30
- # ascendc_compile_definitions(ascendc_kernels PRIVATE -DASCENDC_DUMP)
@@ -1,19 +0,0 @@
1
- #ifndef ASCENDC_KERNELS_H
2
- #define ASCENDC_KERNELS_H
3
-
4
- #include "aclrtlaunch_ascendc_get_row_f32.h"
5
- #include "aclrtlaunch_ascendc_get_row_f16.h"
6
- #include "aclrtlaunch_ascendc_get_row_q8_0.h"
7
- #include "aclrtlaunch_ascendc_get_row_q4_0.h"
8
-
9
- #include "aclrtlaunch_ascendc_quantize_f32_q8_0.h"
10
- #include "aclrtlaunch_ascendc_quantize_f16_q8_0.h"
11
- #include "aclrtlaunch_ascendc_quantize_f16_to_q4_0.h"
12
- #include "aclrtlaunch_ascendc_quantize_f32_to_q4_0.h"
13
-
14
- #include "aclrtlaunch_ascendc_dup_by_rows_fp16.h"
15
- #include "aclrtlaunch_ascendc_dup_by_rows_fp32.h"
16
- #include "aclrtlaunch_ascendc_dup_by_rows_fp32_to_fp16.h"
17
- #include "aclrtlaunch_ascendc_dup_by_rows_fp16_to_fp32.h"
18
-
19
- #endif // ASCENDC_KERNELS_H
@@ -1,234 +0,0 @@
1
- #include "kernel_operator.h"
2
-
3
- using namespace AscendC;
4
-
5
- #define BUFFER_NUM 2
6
- const int64_t SUPPORTED_MAX_DIM = 65535; // currently the limit of max block dim supportted by dup kernel is 65535template <typename SRC_T, typename DST_T>
7
-
8
- template <typename SRC_T, typename DST_T>
9
- class DupByRows {
10
- public:
11
- __aicore__ inline DupByRows() {}
12
- __aicore__ inline void init(GM_ADDR src, GM_ADDR dst, int64_t *input_ne_ub,
13
- size_t *input_nb_ub) {
14
- /* Dup by rows when src is contigous on first dimension and dst is
15
- contiguous, each kernel process one row.
16
- */
17
-
18
- // Input has four dims.
19
- int64_t op_block_num = GetBlockNum();
20
- int64_t op_block_idx = GetBlockIdx();
21
-
22
- // param
23
- num_rows = input_ne_ub[1] * input_ne_ub[2] * input_ne_ub[3];
24
- num_elem = input_ne_ub[0];
25
-
26
- // index for (ne[1], ne[2], ne[3]): (idx_ne1, idx_ne2, idx_ne3)
27
- idx_ne3 = op_block_idx / (input_ne_ub[1] * input_ne_ub[2]);
28
- idx_ne2 = (op_block_idx - idx_ne3 * (input_ne_ub[1] * input_ne_ub[2]))
29
- / (input_ne_ub[1]);
30
- idx_ne1 = op_block_idx - idx_ne3 * (input_ne_ub[1] * input_ne_ub[2])
31
- - idx_ne2 * input_ne_ub[1];
32
-
33
- // src may not contiguous in dim [1,2,3], so stride decited by ne&nb
34
- src_stride = input_nb_ub[3] * idx_ne3 + input_nb_ub[2] * idx_ne2
35
- + input_nb_ub[1] * idx_ne1;
36
-
37
- // dst is contiguous
38
- dst_stride = op_block_idx * (input_ne_ub[0] * sizeof(DST_T));
39
-
40
- src_gm.SetGlobalBuffer(reinterpret_cast<__gm__ SRC_T *>(src +
41
- src_stride));
42
- dst_gm.SetGlobalBuffer(reinterpret_cast<__gm__ DST_T *>(dst +
43
- dst_stride));
44
-
45
- pipe.InitBuffer(src_queue, BUFFER_NUM, (sizeof(SRC_T) * num_elem +
46
- 32 - 1) / 32 * 32);
47
- pipe.InitBuffer(dst_queue, BUFFER_NUM, (sizeof(DST_T) * num_elem +
48
- 32 - 1) / 32 * 32);
49
- }
50
-
51
- __aicore__ inline void copy_in() {
52
- LocalTensor<SRC_T> src_local = src_queue.AllocTensor<SRC_T>();
53
- const size_t elem_per_block = 32 / sizeof(SRC_T);
54
- size_t tail = num_elem % elem_per_block;
55
- size_t cpy_elements_len = tail > 0 ? num_elem + 1 : num_elem;
56
- DataCopy(src_local, src_gm, cpy_elements_len);
57
- src_queue.EnQue(src_local);
58
- }
59
-
60
- __aicore__ inline void copy_out() {
61
- LocalTensor<DST_T> dst_local = dst_queue.DeQue<DST_T>();
62
- #ifdef ASCEND_310P
63
- const size_t elem_per_block = 32 / sizeof(DST_T);
64
- size_t tail = num_elem % elem_per_block;
65
- size_t len = num_elem & ~(elem_per_block - 1);
66
- if (len > 0) {
67
- DataCopy(dst_gm, dst_local, len);
68
- }
69
- if(tail != 0) {
70
- for (size_t i = tail; i < elem_per_block; i++) {
71
- dst_local[len + i].SetValue(0, 0);
72
- }
73
- SetAtomicAdd<float>();
74
- DataCopy(dst_gm[len], dst_local[len], elem_per_block);
75
- SetAtomicNone();
76
- }
77
- #else
78
- DataCopyExtParams dataCopyParams;
79
- dataCopyParams.blockCount = 1;
80
- dataCopyParams.blockLen = num_elem * sizeof(DST_T);
81
- DataCopyPad(dst_gm, dst_local, dataCopyParams);
82
- #endif
83
- dst_queue.FreeTensor(dst_local);
84
- }
85
-
86
- __aicore__ inline void dup() {
87
- // main process, copy one row data from src to dst.
88
- copy_in();
89
-
90
- LocalTensor<SRC_T> src_local = src_queue.DeQue<SRC_T>();
91
- LocalTensor<DST_T> dst_local = dst_queue.AllocTensor<DST_T>();
92
-
93
- int32_t BLOCK_NUM = 32 / sizeof(DST_T);
94
- DataCopy(dst_local, src_local, (num_elem + BLOCK_NUM - 1)
95
- / BLOCK_NUM * BLOCK_NUM);
96
- dst_queue.EnQue<DST_T>(dst_local);
97
-
98
- src_queue.FreeTensor(src_local);
99
- copy_out();
100
- }
101
-
102
- __aicore__ inline void dup_with_cast() {
103
- // main process, copy one row data from src to dst.
104
- // cast dtype from src to dst.
105
- copy_in();
106
-
107
- LocalTensor<SRC_T> src_local = src_queue.DeQue<SRC_T>();
108
- LocalTensor<DST_T> dst_local = dst_queue.AllocTensor<DST_T>();
109
-
110
- Cast(dst_local, src_local, RoundMode::CAST_NONE, num_elem);
111
- dst_queue.EnQue<DST_T>(dst_local);
112
-
113
- src_queue.FreeTensor(src_local);
114
- copy_out();
115
- }
116
-
117
- private:
118
-
119
- TPipe pipe;
120
- GlobalTensor<SRC_T> src_gm;
121
- GlobalTensor<DST_T> dst_gm;
122
-
123
- int64_t num_rows;
124
- int64_t num_elem;
125
- int64_t idx_ne3;
126
- int64_t idx_ne2;
127
- int64_t idx_ne1;
128
- int64_t src_stride;
129
- int64_t dst_stride;
130
-
131
- TQue<QuePosition::VECIN, BUFFER_NUM> src_queue;
132
- TQue<QuePosition::VECOUT, BUFFER_NUM> dst_queue;
133
- };
134
-
135
- template <typename T>
136
- __aicore__ inline void copy_to_ub(GM_ADDR gm, T *ub, size_t size) {
137
- auto gm_ptr = (__gm__ uint8_t *)gm;
138
- auto ub_ptr = (uint8_t *)(ub);
139
- for (int32_t i = 0; i < size; ++i, ++ub_ptr, ++gm_ptr) {
140
- *ub_ptr = *gm_ptr;
141
- }
142
- }
143
-
144
- extern "C" __global__ __aicore__ void ascendc_dup_by_rows_fp16(
145
- GM_ADDR src_gm,
146
- GM_ADDR dst_gm,
147
- GM_ADDR input_ne_gm,
148
- GM_ADDR input_nb_gm,
149
- GM_ADDR output_ne_gm,
150
- GM_ADDR output_nb_gm) {
151
-
152
- int64_t input_ne_ub[4];
153
- size_t input_nb_ub[4];
154
- int64_t output_ne_ub[4];
155
- size_t output_nb_ub[4];
156
-
157
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
158
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
159
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
160
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
161
-
162
- DupByRows<half, half> op;
163
- op.init(src_gm, dst_gm, input_ne_ub, input_nb_ub);
164
- op.dup();
165
- }
166
-
167
- extern "C" __global__ __aicore__ void ascendc_dup_by_rows_fp32(
168
- GM_ADDR src_gm,
169
- GM_ADDR dst_gm,
170
- GM_ADDR input_ne_gm,
171
- GM_ADDR input_nb_gm,
172
- GM_ADDR output_ne_gm,
173
- GM_ADDR output_nb_gm) {
174
- int64_t input_ne_ub[4];
175
- size_t input_nb_ub[4];
176
- int64_t output_ne_ub[4];
177
- size_t output_nb_ub[4];
178
-
179
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
180
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
181
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
182
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
183
-
184
- DupByRows<float, float> op;
185
- op.init(src_gm, dst_gm, input_ne_ub, input_nb_ub);
186
- op.dup();
187
- }
188
-
189
- extern "C" __global__ __aicore__ void ascendc_dup_by_rows_fp32_to_fp16(
190
- GM_ADDR src_gm,
191
- GM_ADDR dst_gm,
192
- GM_ADDR input_ne_gm,
193
- GM_ADDR input_nb_gm,
194
- GM_ADDR output_ne_gm,
195
- GM_ADDR output_nb_gm) {
196
-
197
- int64_t input_ne_ub[4];
198
- size_t input_nb_ub[4];
199
- int64_t output_ne_ub[4];
200
- size_t output_nb_ub[4];
201
-
202
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
203
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
204
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
205
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
206
-
207
- DupByRows<float, half> op;
208
- op.init(src_gm, dst_gm, input_ne_ub, input_nb_ub);
209
- op.dup_with_cast();
210
- }
211
-
212
- extern "C" __global__ __aicore__ void ascendc_dup_by_rows_fp16_to_fp32(
213
- GM_ADDR src_gm,
214
- GM_ADDR dst_gm,
215
- GM_ADDR input_ne_gm,
216
- GM_ADDR input_nb_gm,
217
- GM_ADDR output_ne_gm,
218
- GM_ADDR output_nb_gm) {
219
-
220
- // copy params from gm to ub.
221
- int64_t input_ne_ub[4];
222
- size_t input_nb_ub[4];
223
- int64_t output_ne_ub[4];
224
- size_t output_nb_ub[4];
225
-
226
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
227
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
228
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
229
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
230
-
231
- DupByRows<half, float> op;
232
- op.init(src_gm, dst_gm, input_ne_ub, input_nb_ub);
233
- op.dup_with_cast();
234
- }
@@ -1,197 +0,0 @@
1
- #include "kernel_operator.h"
2
-
3
- // optimize me. Use template to avoid copy code.
4
- using namespace AscendC;
5
-
6
- #define BUFFER_NUM 2
7
-
8
- class GET_ROW_F16 {
9
- public:
10
- __aicore__ inline GET_ROW_F16() {}
11
- __aicore__ inline void init(GM_ADDR input, GM_ADDR indices, GM_ADDR output,
12
- int64_t *input_ne_ub, size_t *input_nb_ub,
13
- int64_t *indices_ne_ub, size_t *indices_nb_ub,
14
- int64_t *output_ne_ub, size_t *output_nb_ub) {
15
- // TODO, use template for F16/f32
16
- int64_t op_block_num = GetBlockNum();
17
- op_block_idx = GetBlockIdx();
18
-
19
- for (int i = 0; i < 4; i++) {
20
- input_ne[i] = input_ne_ub[i];
21
- input_stride[i] = input_nb_ub[i] / input_nb_ub[0];
22
-
23
- indices_ne[i] = indices_ne_ub[i];
24
- indices_stride[i] = indices_nb_ub[i] / indices_nb_ub[0];
25
-
26
- output_ne[i] = output_ne_ub[i];
27
- output_stride[i] = output_nb_ub[i] / output_nb_ub[0];
28
- }
29
-
30
- // Indices has two dims. n_elements = all rows should get.
31
- // dr, all rows should this thread get.
32
- uint64_t n_elements =
33
- indices_ne[0] * indices_ne[1] * indices_ne[2] * indices_ne[3];
34
- dr = n_elements / op_block_num;
35
-
36
- uint64_t tails = n_elements % op_block_num;
37
- if (op_block_idx < tails) {
38
- dr += 1;
39
- ir = dr * op_block_idx;
40
- } else {
41
- ir = dr * op_block_idx + tails;
42
- }
43
-
44
- input_gm.SetGlobalBuffer((__gm__ half *)input);
45
- indices_gm.SetGlobalBuffer((__gm__ int32_t *)indices);
46
- output_gm.SetGlobalBuffer((__gm__ float *)output);
47
-
48
- uint64_t input_local_buffer_size = ((input_ne[0] * sizeof(half) + 31)
49
- & ~31);
50
- uint64_t output_local_buffer_size = ((input_ne[0] * sizeof(float) + 31)
51
- & ~31);
52
-
53
- local_buffer_elems = input_local_buffer_size / sizeof(half);
54
-
55
- // TODO, consider long row that can't put in UB.
56
- // All data should asign to 32. It's ok because all data is align to 32.
57
- pipe.InitBuffer(input_queue, BUFFER_NUM, input_local_buffer_size);
58
- pipe.InitBuffer(output_queue, BUFFER_NUM, output_local_buffer_size);
59
- }
60
-
61
- __aicore__ inline void copy_in(uint32_t offset, size_t len) {
62
- size_t origin_len = len;
63
- LocalTensor<half> input_local = input_queue.AllocTensor<half>();
64
- const size_t elem_per_block = 32 / sizeof(half);
65
- size_t tail = len % elem_per_block;
66
- len = len & ~(elem_per_block - 1);
67
- if(tail != 0) {
68
- len += elem_per_block;
69
- }
70
- DataCopy(input_local, input_gm[offset], len);
71
- input_queue.EnQue(input_local);
72
- }
73
-
74
- __aicore__ inline void copy_out(uint32_t offset, size_t len) {
75
- LocalTensor<float> output_local = output_queue.DeQue<float>();
76
- const size_t elem_per_block = 32 / sizeof(float);
77
- size_t tail = len % elem_per_block;
78
- len = len & ~(elem_per_block - 1);
79
- if (len > 0) {
80
- DataCopy(output_gm[offset], output_local, len);
81
- }
82
-
83
- if(tail != 0) {
84
- #ifdef ASCEND_310P
85
- for (size_t i = tail; i < elem_per_block; i++) {
86
- output_local[len + i].SetValue(0, 0);
87
- }
88
- SetAtomicAdd<float>();
89
- DataCopy(output_gm[offset + len], output_local[len], elem_per_block);
90
- SetAtomicNone();
91
- #else
92
- DataCopyExtParams dataCopyParams;
93
- dataCopyParams.blockCount = 1;
94
- dataCopyParams.blockLen = tail * sizeof(float);
95
- DataCopyPad(output_gm[offset + len], output_local[len],
96
- dataCopyParams);
97
- #endif
98
- }
99
- output_queue.FreeTensor(output_local);
100
- }
101
-
102
- __aicore__ inline void calculate_row(int64_t idx) {
103
- const int64_t indices_ne2_idx = idx / (indices_ne[0] * indices_ne[1]);
104
- const int64_t indices_ne1_idx =
105
- (idx - indices_ne2_idx * indices_ne[0] * indices_ne[1]) /
106
- indices_ne[0];
107
- const int64_t indices_ne0_idx =
108
- (idx - indices_ne2_idx * indices_ne[0] * indices_ne[1] -
109
- indices_ne1_idx * indices_ne[0]);
110
-
111
- const int64_t indices_offset = indices_ne0_idx * indices_stride[0] +
112
- indices_ne1_idx * indices_stride[1] +
113
- indices_ne2_idx * indices_stride[2];
114
- const int32_t selected_row_idx = indices_gm.GetValue(indices_offset);
115
-
116
- const int64_t input_offset = selected_row_idx * input_stride[1] +
117
- indices_ne1_idx * input_stride[2] +
118
- indices_ne2_idx * input_stride[3];
119
-
120
- const int64_t output_offset = indices_ne0_idx * output_stride[1] +
121
- indices_ne1_idx * output_stride[2] +
122
- indices_ne2_idx * output_stride[3];
123
-
124
- copy_in(input_offset, input_ne[0]);
125
- LocalTensor<half> input_local = input_queue.DeQue<half>();
126
- LocalTensor<float> output_local = output_queue.AllocTensor<float>();
127
-
128
- Cast(output_local, input_local, RoundMode::CAST_NONE,
129
- local_buffer_elems);
130
- output_queue.EnQue(output_local);
131
- copy_out(output_offset, input_ne[0]);
132
-
133
- input_queue.FreeTensor(input_local);
134
- }
135
-
136
- __aicore__ inline void calculate() {
137
- for (int64_t i = ir; i < ir + dr; i++) {
138
- calculate_row(i);
139
- }
140
- }
141
-
142
- private:
143
- int64_t input_ne[4];
144
- size_t input_stride[4];
145
-
146
- int64_t indices_ne[4];
147
- size_t indices_stride[4];
148
-
149
- int64_t output_ne[4];
150
- size_t output_stride[4];
151
-
152
- size_t local_buffer_elems;
153
-
154
- int64_t ir;
155
- int64_t dr;
156
-
157
- TPipe pipe;
158
- GlobalTensor<half> input_gm;
159
- GlobalTensor<int32_t> indices_gm;
160
- GlobalTensor<float> output_gm;
161
- TQue<QuePosition::VECIN, BUFFER_NUM> input_queue;
162
- TQue<QuePosition::VECOUT, BUFFER_NUM> output_queue;
163
- int64_t op_block_idx;
164
- };
165
-
166
- template <typename T>
167
- __aicore__ inline void copy_to_ub(GM_ADDR gm, T *ub, size_t size) {
168
- auto gm_ptr = (__gm__ uint8_t *)gm;
169
- auto ub_ptr = (uint8_t *)(ub);
170
- for (int32_t i = 0; i < size; ++i, ++ub_ptr, ++gm_ptr) {
171
- *ub_ptr = *gm_ptr;
172
- }
173
- }
174
-
175
- extern "C" __global__ __aicore__ void ascendc_get_row_f16(
176
- GM_ADDR input_gm, GM_ADDR indices_gm, GM_ADDR output_gm,
177
- GM_ADDR input_ne_gm, GM_ADDR input_nb_gm, GM_ADDR indices_ne_gm,
178
- GM_ADDR indices_nb_gm, GM_ADDR output_ne_gm, GM_ADDR output_nb_gm) {
179
- int64_t input_ne_ub[4];
180
- size_t input_nb_ub[4];
181
- int64_t indices_ne_ub[4];
182
- size_t indices_nb_ub[4];
183
- int64_t output_ne_ub[4];
184
- size_t output_nb_ub[4];
185
-
186
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
187
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
188
- copy_to_ub(indices_ne_gm, indices_ne_ub, 32);
189
- copy_to_ub(indices_nb_gm, indices_nb_ub, 32);
190
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
191
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
192
-
193
- GET_ROW_F16 op;
194
- op.init(input_gm, indices_gm, output_gm, input_ne_ub, input_nb_ub,
195
- indices_ne_ub, indices_nb_ub, output_ne_ub, output_nb_ub);
196
- op.calculate();
197
- }
@@ -1,190 +0,0 @@
1
- #include "kernel_operator.h"
2
-
3
- // optimize me. Use template to avoid copy code.
4
- using namespace AscendC;
5
-
6
- #define BUFFER_NUM 2
7
-
8
- class GET_ROW_F32 {
9
- public:
10
- __aicore__ inline GET_ROW_F32() {}
11
- __aicore__ inline void init(GM_ADDR input, GM_ADDR indices, GM_ADDR output,
12
- int64_t *input_ne_ub, size_t *input_nb_ub,
13
- int64_t *indices_ne_ub, size_t *indices_nb_ub,
14
- int64_t *output_ne_ub, size_t *output_nb_ub) {
15
- int64_t op_block_num = GetBlockNum();
16
- op_block_idx = GetBlockIdx();
17
-
18
- for (int i = 0; i < 4; i++) {
19
- input_ne[i] = input_ne_ub[i];
20
- input_stride[i] = input_nb_ub[i] / input_nb_ub[0];
21
-
22
- indices_ne[i] = indices_ne_ub[i];
23
- indices_stride[i] = indices_nb_ub[i] / indices_nb_ub[0];
24
-
25
- output_ne[i] = output_ne_ub[i];
26
- output_stride[i] = output_nb_ub[i] / output_nb_ub[0];
27
- }
28
-
29
- // Indices has two dims. n_elements = all rows should get.
30
- // dr, all rows should this thread get.
31
- uint64_t n_elements =
32
- indices_ne[0] * indices_ne[1] * indices_ne[2] * indices_ne[3];
33
- dr = n_elements / op_block_num;
34
-
35
- uint64_t tails = n_elements % op_block_num;
36
- if (op_block_idx < tails) {
37
- dr += 1;
38
- ir = dr * op_block_idx;
39
- } else {
40
- ir = dr * op_block_idx + tails;
41
- }
42
-
43
- input_gm.SetGlobalBuffer((__gm__ float *)input);
44
- indices_gm.SetGlobalBuffer((__gm__ int32_t *)indices);
45
- output_gm.SetGlobalBuffer((__gm__ float *)output);
46
-
47
- uint64_t local_buffer_size = ((input_ne[0] * sizeof(float) + 31) & ~31);
48
- local_buffer_elems = local_buffer_size / sizeof(float);
49
-
50
- // TODO, consider long row that can't put in UB.
51
- // All data should asign to 32. It's ok because all data is align to 32.
52
- pipe.InitBuffer(input_queue, BUFFER_NUM, local_buffer_size);
53
- pipe.InitBuffer(output_queue, BUFFER_NUM, local_buffer_size);
54
- }
55
-
56
- __aicore__ inline void copy_in(uint32_t offset, size_t len) {
57
- LocalTensor<float> input_local = input_queue.AllocTensor<float>();
58
- const size_t elem_per_block = 32 / sizeof(float);
59
- size_t tail = len % elem_per_block;
60
- len = len & ~(elem_per_block - 1);
61
- if(tail != 0) {
62
- len += elem_per_block;
63
- }
64
- DataCopy(input_local, input_gm[offset], len);
65
- input_queue.EnQue(input_local);
66
- }
67
-
68
- __aicore__ inline void copy_out(uint32_t offset, size_t len) {
69
- LocalTensor<float> output_local = output_queue.DeQue<float>();
70
- const size_t elem_per_block = 32 / sizeof(float);
71
- size_t tail = len % elem_per_block;
72
- len = len & ~(elem_per_block - 1);
73
- if (len > 0) {
74
- DataCopy(output_gm[offset], output_local, len);
75
- }
76
-
77
- if(tail != 0) {
78
- #ifdef ASCEND_310P
79
- for (size_t i = tail; i < elem_per_block; i++) {
80
- output_local[len + i].SetValue(0, 0);
81
- }
82
- SetAtomicAdd<float>();
83
- DataCopy(output_gm[offset + len], output_local[len], elem_per_block);
84
- SetAtomicNone();
85
- #else
86
- DataCopyExtParams dataCopyParams;
87
- dataCopyParams.blockCount = 1;
88
- dataCopyParams.blockLen = tail * sizeof(float);
89
- DataCopyPad(output_gm[offset + len], output_local[len],
90
- dataCopyParams);
91
- #endif
92
- }
93
- output_queue.FreeTensor(output_local);
94
- }
95
-
96
- __aicore__ inline void calculate_row(int64_t idx) {
97
- const int64_t indices_ne2_idx = idx / (indices_ne[0] * indices_ne[1]);
98
- const int64_t indices_ne1_idx =
99
- (idx - indices_ne2_idx * indices_ne[0] * indices_ne[1]) /
100
- indices_ne[0];
101
- const int64_t indices_ne0_idx =
102
- (idx - indices_ne2_idx * indices_ne[0] * indices_ne[1] -
103
- indices_ne1_idx * indices_ne[0]);
104
-
105
- const int64_t indices_offset = indices_ne0_idx * indices_stride[0] +
106
- indices_ne1_idx * indices_stride[1] +
107
- indices_ne2_idx * indices_stride[2];
108
- const int32_t selected_row_idx = indices_gm.GetValue(indices_offset);
109
-
110
- const int64_t input_offset = selected_row_idx * input_stride[1] +
111
- indices_ne1_idx * input_stride[2] +
112
- indices_ne2_idx * input_stride[3];
113
-
114
- const int64_t output_offset = indices_ne0_idx * output_stride[1] +
115
- indices_ne1_idx * output_stride[2] +
116
- indices_ne2_idx * output_stride[3];
117
-
118
- copy_in(input_offset, input_ne[0]);
119
- LocalTensor<float> input_local = input_queue.DeQue<float>();
120
- LocalTensor<float> output_local = output_queue.AllocTensor<float>();
121
-
122
- DataCopy(output_local, input_local, local_buffer_elems);
123
- output_queue.EnQue(output_local);
124
- copy_out(output_offset, input_ne[0]);
125
-
126
- input_queue.FreeTensor(input_local);
127
- }
128
-
129
- __aicore__ inline void calculate() {
130
- for (int64_t i = ir; i < ir + dr; i++) {
131
- calculate_row(i);
132
- }
133
- }
134
-
135
- private:
136
- int64_t input_ne[4];
137
- size_t input_stride[4];
138
-
139
- int64_t indices_ne[4];
140
- size_t indices_stride[4];
141
-
142
- int64_t output_ne[4];
143
- size_t output_stride[4];
144
-
145
- size_t local_buffer_elems;
146
-
147
- int64_t ir;
148
- int64_t dr;
149
-
150
- TPipe pipe;
151
- GlobalTensor<float> input_gm;
152
- GlobalTensor<int32_t> indices_gm;
153
- GlobalTensor<float> output_gm;
154
- TQue<QuePosition::VECIN, BUFFER_NUM> input_queue;
155
- TQue<QuePosition::VECOUT, BUFFER_NUM> output_queue;
156
- int64_t op_block_idx;
157
- };
158
-
159
- template <typename T>
160
- __aicore__ inline void copy_to_ub(GM_ADDR gm, T *ub, size_t size) {
161
- auto gm_ptr = (__gm__ uint8_t *)gm;
162
- auto ub_ptr = (uint8_t *)(ub);
163
- for (int32_t i = 0; i < size; ++i, ++ub_ptr, ++gm_ptr) {
164
- *ub_ptr = *gm_ptr;
165
- }
166
- }
167
-
168
- extern "C" __global__ __aicore__ void ascendc_get_row_f32(
169
- GM_ADDR input_gm, GM_ADDR indices_gm, GM_ADDR output_gm,
170
- GM_ADDR input_ne_gm, GM_ADDR input_nb_gm, GM_ADDR indices_ne_gm,
171
- GM_ADDR indices_nb_gm, GM_ADDR output_ne_gm, GM_ADDR output_nb_gm) {
172
- int64_t input_ne_ub[4];
173
- size_t input_nb_ub[4];
174
- int64_t indices_ne_ub[4];
175
- size_t indices_nb_ub[4];
176
- int64_t output_ne_ub[4];
177
- size_t output_nb_ub[4];
178
-
179
- copy_to_ub(input_ne_gm, input_ne_ub, 32);
180
- copy_to_ub(input_nb_gm, input_nb_ub, 32);
181
- copy_to_ub(indices_ne_gm, indices_ne_ub, 32);
182
- copy_to_ub(indices_nb_gm, indices_nb_ub, 32);
183
- copy_to_ub(output_ne_gm, output_ne_ub, 32);
184
- copy_to_ub(output_nb_gm, output_nb_ub, 32);
185
-
186
- GET_ROW_F32 op;
187
- op.init(input_gm, indices_gm, output_gm, input_ne_ub, input_nb_ub,
188
- indices_ne_ub, indices_nb_ub, output_ne_ub, output_nb_ub);
189
- op.calculate();
190
- }