whispercpp 1.3.7 → 1.3.8

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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -4
  3. data/ext/options.rb +1 -1
  4. data/ext/ruby_whisper.c +0 -1
  5. data/ext/ruby_whisper.h +7 -1
  6. data/ext/ruby_whisper_context.c +50 -1
  7. data/ext/ruby_whisper_log_settable.h +1 -2
  8. data/ext/ruby_whisper_params.c +9 -8
  9. data/ext/ruby_whisper_transcribe.cpp +0 -19
  10. data/ext/ruby_whisper_vad_context.c +30 -10
  11. data/ext/ruby_whisper_vad_context_detect.cpp +8 -9
  12. data/ext/ruby_whisper_vad_params.c +4 -4
  13. data/ext/ruby_whisper_vad_segment.c +2 -2
  14. data/ext/sources/CMakeLists.txt +2 -1
  15. data/ext/sources/cmake/parakeet.pc.in +2 -2
  16. data/ext/sources/cmake/whisper.pc.in +2 -2
  17. data/ext/sources/examples/cli/cli.cpp +9 -1
  18. data/ext/sources/examples/common-ggml.cpp +2 -0
  19. data/ext/sources/examples/vad-speech-segments/speech.cpp +3 -2
  20. data/ext/sources/ggml/CMakeLists.txt +3 -4
  21. data/ext/sources/ggml/include/ggml-cuda.h +0 -3
  22. data/ext/sources/ggml/include/ggml-sycl.h +8 -0
  23. data/ext/sources/ggml/include/ggml.h +3 -1
  24. data/ext/sources/ggml/src/CMakeLists.txt +8 -1
  25. data/ext/sources/ggml/src/ggml-backend-meta.cpp +7 -4
  26. data/ext/sources/ggml/src/ggml-common.h +13 -2
  27. data/ext/sources/ggml/src/ggml-cpu/CMakeLists.txt +1 -1
  28. data/ext/sources/ggml/src/ggml-cpu/amx/mmq.cpp +5 -6
  29. data/ext/sources/ggml/src/ggml-cpu/arch/arm/quants.c +78 -4
  30. data/ext/sources/ggml/src/ggml-cpu/arch/x86/quants.c +142 -4
  31. data/ext/sources/ggml/src/ggml-cpu/arch-fallback.h +7 -2
  32. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.c +14 -0
  33. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.cpp +26 -19
  34. data/ext/sources/ggml/src/ggml-cpu/ops.cpp +129 -46
  35. data/ext/sources/ggml/src/ggml-cpu/quants.c +51 -0
  36. data/ext/sources/ggml/src/ggml-cpu/quants.h +3 -0
  37. data/ext/sources/ggml/src/ggml-cpu/simd-gemm.h +1 -1
  38. data/ext/sources/ggml/src/ggml-cpu/simd-mappings.h +11 -0
  39. data/ext/sources/ggml/src/ggml-cpu/vec.cpp +2 -2
  40. data/ext/sources/ggml/src/ggml-cuda/binbcast.cu +90 -46
  41. data/ext/sources/ggml/src/ggml-cuda/col2im-1d.cu +81 -0
  42. data/ext/sources/ggml/src/ggml-cuda/col2im-1d.cuh +3 -0
  43. data/ext/sources/ggml/src/ggml-cuda/common.cuh +4 -0
  44. data/ext/sources/ggml/src/ggml-cuda/concat.cu +33 -21
  45. data/ext/sources/ggml/src/ggml-cuda/conv-transpose-1d.cu +14 -12
  46. data/ext/sources/ggml/src/ggml-cuda/convert.cu +86 -34
  47. data/ext/sources/ggml/src/ggml-cuda/cpy.cu +80 -29
  48. data/ext/sources/ggml/src/ggml-cuda/fattn-common.cuh +9 -5
  49. data/ext/sources/ggml/src/ggml-cuda/fattn-mma-f16.cuh +4 -0
  50. data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cuh +9 -5
  51. data/ext/sources/ggml/src/ggml-cuda/fattn.cu +27 -21
  52. data/ext/sources/ggml/src/ggml-cuda/gated_delta_net.cu +40 -25
  53. data/ext/sources/ggml/src/ggml-cuda/gated_delta_net.cuh +10 -0
  54. data/ext/sources/ggml/src/ggml-cuda/getrows.cu +15 -12
  55. data/ext/sources/ggml/src/ggml-cuda/ggml-cuda.cu +718 -1248
  56. data/ext/sources/ggml/src/ggml-cuda/mmq.cu +7 -0
  57. data/ext/sources/ggml/src/ggml-cuda/mmvq.cu +77 -40
  58. data/ext/sources/ggml/src/ggml-cuda/out-prod.cu +55 -12
  59. data/ext/sources/ggml/src/ggml-cuda/set-rows.cu +64 -4
  60. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_16-ncols2_2.cu +1 -0
  61. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_32-ncols2_2.cu +1 -0
  62. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_4-ncols2_2.cu +1 -0
  63. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-mma-f16-instance-ncols1_8-ncols2_2.cu +1 -0
  64. data/ext/sources/ggml/src/ggml-cuda/topk-moe.cu +7 -1
  65. data/ext/sources/ggml/src/ggml-cuda/vendors/hip.h +1 -0
  66. data/ext/sources/ggml/src/ggml-cuda/vendors/musa.h +1 -0
  67. data/ext/sources/ggml/src/ggml-hexagon/CMakeLists.txt +0 -5
  68. data/ext/sources/ggml/src/ggml-hexagon/ggml-hexagon.cpp +1634 -1293
  69. data/ext/sources/ggml/src/ggml-hexagon/htp/CMakeLists.txt +11 -40
  70. data/ext/sources/ggml/src/ggml-hexagon/htp/cmake-toolchain.cmake +13 -15
  71. data/ext/sources/ggml/src/ggml-hexagon/htp/concat-ops.c +1 -1
  72. data/ext/sources/ggml/src/ggml-hexagon/htp/flash-attn-ops.c +1749 -399
  73. data/ext/sources/ggml/src/ggml-hexagon/htp/flash-attn-ops.h +303 -0
  74. data/ext/sources/ggml/src/ggml-hexagon/htp/hex-common.h +80 -0
  75. data/ext/sources/ggml/src/ggml-hexagon/htp/hex-dma.h +26 -23
  76. data/ext/sources/ggml/src/ggml-hexagon/htp/hex-profile.h +64 -0
  77. data/ext/sources/ggml/src/ggml-hexagon/htp/hex-utils.h +1 -83
  78. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-fa-kernels.h +555 -0
  79. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-mm-kernels-tiled.h +1303 -0
  80. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-queue.c +9 -0
  81. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-queue.h +27 -4
  82. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-utils.h +59 -37
  83. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ctx.h +11 -3
  84. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ops.h +52 -12
  85. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-vtcm.h +19 -0
  86. data/ext/sources/ggml/src/ggml-hexagon/htp/htp_iface.idl +2 -1
  87. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-base.h +14 -30
  88. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-exp.h +39 -0
  89. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-fa-kernels.h +232 -0
  90. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-mm-kernels-flat.h +1511 -0
  91. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-mm-kernels-tiled.h +1200 -0
  92. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-sigmoid.h +39 -0
  93. data/ext/sources/ggml/src/ggml-hexagon/htp/main.c +127 -32
  94. data/ext/sources/ggml/src/ggml-hexagon/htp/matmul-ops.c +3023 -4425
  95. data/ext/sources/ggml/src/ggml-hexagon/htp/matmul-ops.h +650 -0
  96. data/ext/sources/ggml/src/ggml-hexagon/htp/rope-ops.c +48 -13
  97. data/ext/sources/ggml/src/ggml-hexagon/htp/ssm-conv.c +10 -9
  98. data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.c +15 -3
  99. data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.h +8 -0
  100. data/ext/sources/ggml/src/ggml-hexagon/htp-opnode.h +168 -50
  101. data/ext/sources/ggml/src/ggml-hexagon/libggml-htp.inf +0 -4
  102. data/ext/sources/ggml/src/ggml-hip/CMakeLists.txt +5 -0
  103. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.cpp +69 -5
  104. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.h +4 -1
  105. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.m +27 -6
  106. data/ext/sources/ggml/src/ggml-metal/ggml-metal-impl.h +38 -0
  107. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.cpp +132 -2
  108. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.h +2 -0
  109. data/ext/sources/ggml/src/ggml-metal/ggml-metal.metal +345 -87
  110. data/ext/sources/ggml/src/ggml-opencl/CMakeLists.txt +13 -0
  111. data/ext/sources/ggml/src/ggml-opencl/fa_tune.h +92 -0
  112. data/ext/sources/ggml/src/ggml-opencl/ggml-opencl.cpp +4060 -357
  113. data/ext/sources/ggml/src/ggml-opencl/kernels/cvt.cl +198 -0
  114. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f16.cl +81 -41
  115. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32.cl +88 -39
  116. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32_f16.cl +1995 -96
  117. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32_q4_0.cl +1615 -0
  118. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32_q8_0.cl +1486 -0
  119. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_pre_f16.cl +156 -0
  120. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_mxfp4_f32_ns.cl +74 -6
  121. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q4_0_f32_ns.cl +74 -6
  122. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q4_1_f32_ns.cl +74 -6
  123. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q4_k_f32_ns.cl +71 -6
  124. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q5_0_f32_ns.cl +74 -6
  125. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q5_1_f32_ns.cl +74 -6
  126. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q5_k_f32_ns.cl +74 -6
  127. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_q6_k_f32_ns.cl +74 -6
  128. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_noshuffle_q1_0_f32.cl +94 -0
  129. data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_noshuffle_q1_0_f32.cl +121 -0
  130. data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_noshuffle_q8_0_f32.cl +1 -1
  131. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_q1_0_f32_l4_lm.cl +156 -0
  132. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_f16_f32_l4.cl +1149 -0
  133. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q1_0_f32.cl +141 -0
  134. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mv_q1_0_f32_flat.cl +190 -0
  135. data/ext/sources/ggml/src/ggml-opencl/kernels/norm.cl +5 -2
  136. data/ext/sources/ggml/src/ggml-opencl/kernels/set_rows.cl +500 -0
  137. data/ext/sources/ggml/src/ggml-opencl/libdl.h +79 -0
  138. data/ext/sources/ggml/src/ggml-openvino/.clang-format +0 -5
  139. data/ext/sources/ggml/src/ggml-openvino/CMakeLists.txt +2 -4
  140. data/ext/sources/ggml/src/ggml-openvino/ggml-decoder.cpp +733 -130
  141. data/ext/sources/ggml/src/ggml-openvino/ggml-decoder.h +76 -23
  142. data/ext/sources/ggml/src/ggml-openvino/ggml-openvino-extra.cpp +57 -3
  143. data/ext/sources/ggml/src/ggml-openvino/ggml-openvino-extra.h +29 -8
  144. data/ext/sources/ggml/src/ggml-openvino/ggml-openvino.cpp +307 -59
  145. data/ext/sources/ggml/src/ggml-openvino/ggml-quants.cpp +66 -0
  146. data/ext/sources/ggml/src/ggml-openvino/ggml-quants.h +10 -4
  147. data/ext/sources/ggml/src/ggml-openvino/openvino/decoder.h +56 -16
  148. data/ext/sources/ggml/src/ggml-openvino/openvino/frontend.h +1 -1
  149. data/ext/sources/ggml/src/ggml-openvino/openvino/input_model.h +4 -4
  150. data/ext/sources/ggml/src/ggml-openvino/openvino/node_context.h +94 -37
  151. data/ext/sources/ggml/src/ggml-openvino/openvino/op/add_id.cpp +76 -0
  152. data/ext/sources/ggml/src/ggml-openvino/openvino/op/argsort.cpp +47 -0
  153. data/ext/sources/ggml/src/ggml-openvino/openvino/op/clamp.cpp +33 -0
  154. data/ext/sources/ggml/src/ggml-openvino/openvino/op/concat.cpp +48 -0
  155. data/ext/sources/ggml/src/ggml-openvino/openvino/op/cont.cpp +8 -16
  156. data/ext/sources/ggml/src/ggml-openvino/openvino/op/cpy.cpp +14 -1
  157. data/ext/sources/ggml/src/ggml-openvino/openvino/op/div.cpp +146 -0
  158. data/ext/sources/ggml/src/ggml-openvino/openvino/op/flash_attn_ext.cpp +108 -21
  159. data/ext/sources/ggml/src/ggml-openvino/openvino/op/gated_delta_net.cpp +282 -0
  160. data/ext/sources/ggml/src/ggml-openvino/openvino/op/gated_delta_net.hpp +65 -0
  161. data/ext/sources/ggml/src/ggml-openvino/openvino/op/get_rows.cpp +2 -9
  162. data/ext/sources/ggml/src/ggml-openvino/openvino/op/glu_geglu.cpp +21 -7
  163. data/ext/sources/ggml/src/ggml-openvino/openvino/op/glu_swiglu.cpp +41 -8
  164. data/ext/sources/ggml/src/ggml-openvino/openvino/op/im2col.cpp +120 -0
  165. data/ext/sources/ggml/src/ggml-openvino/openvino/op/l2_norm.cpp +44 -0
  166. data/ext/sources/ggml/src/ggml-openvino/openvino/op/mul_mat_id.cpp +226 -0
  167. data/ext/sources/ggml/src/ggml-openvino/openvino/op/mulmat.cpp +19 -9
  168. data/ext/sources/ggml/src/ggml-openvino/openvino/op/norm.cpp +58 -0
  169. data/ext/sources/ggml/src/ggml-openvino/openvino/op/pad.cpp +95 -0
  170. data/ext/sources/ggml/src/ggml-openvino/openvino/op/permute.cpp +58 -13
  171. data/ext/sources/ggml/src/ggml-openvino/openvino/op/repeat.cpp +74 -0
  172. data/ext/sources/ggml/src/ggml-openvino/openvino/op/reshape.cpp +13 -6
  173. data/ext/sources/ggml/src/ggml-openvino/openvino/op/rms_norm.cpp +1 -1
  174. data/ext/sources/ggml/src/ggml-openvino/openvino/op/rope.cpp +134 -38
  175. data/ext/sources/ggml/src/ggml-openvino/openvino/op/set_rows.cpp +3 -3
  176. data/ext/sources/ggml/src/ggml-openvino/openvino/op/softmax.cpp +126 -49
  177. data/ext/sources/ggml/src/ggml-openvino/openvino/op/ssm_conv.cpp +59 -0
  178. data/ext/sources/ggml/src/ggml-openvino/openvino/op/sum_rows.cpp +27 -0
  179. data/ext/sources/ggml/src/ggml-openvino/openvino/op/transpose.cpp +32 -1
  180. data/ext/sources/ggml/src/ggml-openvino/openvino/op/unary_silu.cpp +1 -1
  181. data/ext/sources/ggml/src/ggml-openvino/openvino/op/unary_softplus.cpp +38 -0
  182. data/ext/sources/ggml/src/ggml-openvino/openvino/op/view.cpp +90 -25
  183. data/ext/sources/ggml/src/ggml-openvino/openvino/op_table.cpp +41 -23
  184. data/ext/sources/ggml/src/ggml-openvino/openvino/op_table.h +18 -5
  185. data/ext/sources/ggml/src/ggml-openvino/openvino/pass/mark_decompression_convert_constant_folding.h +1 -1
  186. data/ext/sources/ggml/src/ggml-openvino/openvino/translate_session.cpp +43 -40
  187. data/ext/sources/ggml/src/ggml-openvino/openvino/translate_session.h +5 -4
  188. data/ext/sources/ggml/src/ggml-openvino/openvino/utils.cpp +548 -3
  189. data/ext/sources/ggml/src/ggml-openvino/openvino/utils.h +28 -26
  190. data/ext/sources/ggml/src/ggml-openvino/utils.cpp +383 -94
  191. data/ext/sources/ggml/src/ggml-openvino/utils.h +11 -8
  192. data/ext/sources/ggml/src/ggml-quants.c +76 -0
  193. data/ext/sources/ggml/src/ggml-quants.h +3 -0
  194. data/ext/sources/ggml/src/ggml-sycl/CMakeLists.txt +5 -5
  195. data/ext/sources/ggml/src/ggml-sycl/backend.hpp +2 -0
  196. data/ext/sources/ggml/src/ggml-sycl/binbcast.cpp +12 -0
  197. data/ext/sources/ggml/src/ggml-sycl/col2im-1d.cpp +102 -0
  198. data/ext/sources/ggml/src/ggml-sycl/col2im-1d.hpp +8 -0
  199. data/ext/sources/ggml/src/ggml-sycl/common.cpp +6 -8
  200. data/ext/sources/ggml/src/ggml-sycl/common.hpp +19 -2
  201. data/ext/sources/ggml/src/ggml-sycl/concat.cpp +21 -1
  202. data/ext/sources/ggml/src/ggml-sycl/conv2d-dw.cpp +158 -0
  203. data/ext/sources/ggml/src/ggml-sycl/conv2d-dw.hpp +10 -0
  204. data/ext/sources/ggml/src/ggml-sycl/conv2d-transpose.cpp +125 -0
  205. data/ext/sources/ggml/src/ggml-sycl/conv2d-transpose.hpp +10 -0
  206. data/ext/sources/ggml/src/ggml-sycl/conv2d.cpp +150 -0
  207. data/ext/sources/ggml/src/ggml-sycl/conv2d.hpp +10 -0
  208. data/ext/sources/ggml/src/ggml-sycl/conv3d.cpp +224 -0
  209. data/ext/sources/ggml/src/ggml-sycl/conv3d.hpp +8 -0
  210. data/ext/sources/ggml/src/ggml-sycl/convert.cpp +6 -0
  211. data/ext/sources/ggml/src/ggml-sycl/cpy.cpp +706 -0
  212. data/ext/sources/ggml/src/ggml-sycl/cpy.hpp +281 -0
  213. data/ext/sources/ggml/src/ggml-sycl/cross_entropy_loss.cpp +255 -0
  214. data/ext/sources/ggml/src/ggml-sycl/cross_entropy_loss.hpp +7 -0
  215. data/ext/sources/ggml/src/ggml-sycl/dequantize.hpp +15 -0
  216. data/ext/sources/ggml/src/ggml-sycl/dmmv.cpp +492 -319
  217. data/ext/sources/ggml/src/ggml-sycl/dpct/helper.hpp +15 -7
  218. data/ext/sources/ggml/src/ggml-sycl/element_wise.cpp +215 -115
  219. data/ext/sources/ggml/src/ggml-sycl/element_wise.hpp +2 -0
  220. data/ext/sources/ggml/src/ggml-sycl/ggml-sycl.cpp +1006 -336
  221. data/ext/sources/ggml/src/ggml-sycl/mmvq.cpp +252 -67
  222. data/ext/sources/ggml/src/ggml-sycl/mmvq.hpp +17 -0
  223. data/ext/sources/ggml/src/ggml-sycl/norm.cpp +103 -49
  224. data/ext/sources/ggml/src/ggml-sycl/outprod.cpp +45 -9
  225. data/ext/sources/ggml/src/ggml-sycl/pool.cpp +185 -0
  226. data/ext/sources/ggml/src/ggml-sycl/pool.hpp +22 -0
  227. data/ext/sources/ggml/src/ggml-sycl/presets.hpp +3 -1
  228. data/ext/sources/ggml/src/ggml-sycl/set_rows.cpp +10 -2
  229. data/ext/sources/ggml/src/ggml-sycl/softmax.cpp +9 -10
  230. data/ext/sources/ggml/src/ggml-sycl/vecdotq.hpp +35 -0
  231. data/ext/sources/ggml/src/ggml-vulkan/CMakeLists.txt +5 -0
  232. data/ext/sources/ggml/src/ggml-vulkan/ggml-vulkan.cpp +833 -215
  233. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/col2im_1d.comp +61 -0
  234. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_mm.comp +1 -1
  235. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv3d_mm.comp +431 -0
  236. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag.comp +3 -3
  237. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn.comp +1 -0
  238. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +1 -0
  239. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/generic_unary_head.glsl +21 -19
  240. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows_back.comp +25 -0
  241. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/glu_head.glsl +23 -4
  242. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/glu_main.glsl +14 -18
  243. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/l2_norm.comp +4 -7
  244. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq.comp +21 -24
  245. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp +31 -23
  246. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +6 -5
  247. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_funcs.glsl +84 -67
  248. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/norm.comp +10 -10
  249. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat_back.comp +3 -3
  250. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/roll.comp +3 -3
  251. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tri.comp +3 -3
  252. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/unary.comp +168 -0
  253. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +121 -74
  254. data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp +26 -19
  255. data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu.cpp +31 -36
  256. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/common_decls.tmpl +16 -2
  257. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_vec_split.wgsl +7 -7
  258. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/get_rows.wgsl +21 -0
  259. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_decls.tmpl +439 -320
  260. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_id_vec.wgsl +2 -2
  261. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec.wgsl +45 -39
  262. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec_acc.tmpl +586 -465
  263. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec_q_acc.tmpl +63 -69
  264. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/quantize_q8.wgsl +14 -9
  265. data/ext/sources/ggml/src/ggml.c +36 -14
  266. data/ext/sources/include/whisper.h +21 -0
  267. data/ext/sources/src/whisper.cpp +164 -14
  268. data/lib/whisper/log_settable.rb +5 -8
  269. data/lib/whisper/model/uri.rb +0 -7
  270. data/sig/whisper.rbs +6 -0
  271. data/test/test_vad.rb +9 -0
  272. data/test/test_vad_context.rb +2 -2
  273. data/whispercpp.gemspec +1 -1
  274. metadata +62 -37
  275. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-flash-attn-ops.c +0 -1878
  276. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-matmul-ops.c +0 -2066
  277. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-ops.c +0 -6
  278. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-ops.h +0 -88
  279. data/ext/sources/ggml/src/ggml-hexagon/htp/hmx-profile.h +0 -34
  280. data/ext/sources/ggml/src/ggml-hexagon/htp/vtcm-utils.h +0 -16
  281. data/ext/sources/ggml/src/ggml-openvino/openvino/op/unary_gelu.cpp +0 -25
  282. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/abs.comp +0 -21
  283. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ceil.comp +0 -22
  284. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/clamp.comp +0 -17
  285. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cos.comp +0 -17
  286. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/elu.comp +0 -27
  287. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/exp.comp +0 -20
  288. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/floor.comp +0 -22
  289. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu.comp +0 -25
  290. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_erf.comp +0 -39
  291. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_quick.comp +0 -23
  292. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardsigmoid.comp +0 -22
  293. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardswish.comp +0 -22
  294. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/leaky_relu.comp +0 -22
  295. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/neg.comp +0 -20
  296. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/relu.comp +0 -21
  297. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/round.comp +0 -29
  298. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sgn.comp +0 -21
  299. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sigmoid.comp +0 -20
  300. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu.comp +0 -22
  301. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sin.comp +0 -17
  302. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/softplus.comp +0 -23
  303. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sqrt.comp +0 -17
  304. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/square.comp +0 -17
  305. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/step.comp +0 -22
  306. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tanh.comp +0 -20
  307. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/trunc.comp +0 -22
  308. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/xielu.comp +0 -35
@@ -1,6 +0,0 @@
1
- // HMX operations compiled as a single translation unit.
2
- // This allows interprocedural optimizations within HMX ops without requiring global HTP LTO.
3
-
4
- #include "hmx-queue.c"
5
- #include "hmx-matmul-ops.c"
6
- #include "hmx-flash-attn-ops.c"
@@ -1,88 +0,0 @@
1
- // HMX operation entry-point declarations.
2
- // Ported from htp-ops-lib/include/dsp/ops.h (renamed, benchmark kernels removed). (https://github.com/haozixu/htp-ops-lib)
3
-
4
- #ifndef HMX_OPS_H
5
- #define HMX_OPS_H
6
-
7
- #include <stddef.h>
8
- #include <stdint.h>
9
-
10
- #include "htp-ops.h"
11
-
12
- #ifdef __cplusplus
13
- extern "C" {
14
- #endif
15
-
16
- typedef struct {
17
- float *dst;
18
- const float *activation;
19
- const __fp16 *permuted_weight;
20
- int m;
21
- int k;
22
- int n;
23
- int act_stride;
24
- int weight_stride;
25
- int dst_stride;
26
- int ne02;
27
- int ne03;
28
- int ne12;
29
- int ne13;
30
- size_t src0_nb2;
31
- size_t src0_nb3;
32
- size_t src1_nb2;
33
- size_t src1_nb3;
34
- size_t dst_nb2;
35
- size_t dst_nb3;
36
- } hmx_matmul_f16_f32_batched_params_t;
37
-
38
- // HMX matrix multiplication — tile-permuted FP16 weights, FP32 activation/output
39
- // act_stride: activation row stride in elements (= k for contiguous, or
40
- // nb[1]/sizeof(float) for permuted tensors like attention Q).
41
- // weight_stride: weight row stride in elements (= k for compact weights, or
42
- // nb[1]/sizeof(__fp16) for permuted KV-cache views used by QK).
43
- int hmx_matmul_f16_f32(struct htp_context *ctx,
44
- float *restrict dst,
45
- const float *activation,
46
- const __fp16 *permuted_weight,
47
- int m, int k, int n,
48
- int act_stride,
49
- int weight_stride);
50
-
51
- // Batched F16 wrapper over hmx_mat_mul_f16_f32.
52
- // Batch semantics match ggml_mul_mat(): src0 broadcasts to src1 in dims 2/3.
53
- int hmx_matmul_f16_f32_batched(struct htp_context *ctx, const hmx_matmul_f16_f32_batched_params_t *params);
54
-
55
- // HMX matrix multiplication — all supported weight types (F16/F32/Q4_0/Q4_1/Q8_0/IQ4_NL/MXFP4)
56
- int hmx_matmul_2d_f32(struct htp_context *ctx,
57
- float *restrict dst,
58
- const float *activation,
59
- const uint8_t *permuted_weight,
60
- int m, int k, int n,
61
- int act_stride,
62
- int weight_stride,
63
- int weight_type);
64
-
65
- struct mmid_row_mapping;
66
-
67
- int hmx_matmul_id_2d_f32(struct htp_context *ctx,
68
- float *restrict dst,
69
- const float *activation,
70
- const uint8_t *permuted_weight,
71
- int m, int k, int n,
72
- int ne11,
73
- size_t act_nb1, size_t act_nb2,
74
- size_t dst_nb1, size_t dst_nb2,
75
- int weight_stride,
76
- int weight_type,
77
- const struct mmid_row_mapping *matrix_rows,
78
- int cur_a,
79
- int mapping_stride);
80
-
81
- // HMX flash attention
82
- int hmx_flash_attn_ext(struct htp_ops_context * octx);
83
-
84
- #ifdef __cplusplus
85
- }
86
- #endif
87
-
88
- #endif // HMX_OPS_H
@@ -1,34 +0,0 @@
1
- // Conditional fine-grained profiling macros for HMX operations.
2
- //
3
- // Define ENABLE_PROFILE_TIMERS (via compiler flag or before including this
4
- // header) to instrument sub-operation latencies with HAP qtimer. When the
5
- // macro is not defined the TIMER_* helpers expand to nothing so there is zero
6
- // overhead.
7
- //
8
- // Usage:
9
- // TIMER_DEFINE(my_phase); // declare accumulator variable
10
- // TIMER_START(my_phase); // snapshot start time
11
- // ... work ...
12
- // TIMER_STOP(my_phase); // accumulate elapsed ticks
13
- // FARF(ALWAYS, "my_phase: %lld us", TIMER_US(my_phase));
14
-
15
- #ifndef HMX_PROFILE_H
16
- #define HMX_PROFILE_H
17
-
18
- #include <HAP_perf.h>
19
-
20
- // #define ENABLE_PROFILE_TIMERS
21
-
22
- #if defined(ENABLE_PROFILE_TIMERS)
23
- # define TIMER_DEFINE(name) int64_t name##_ticks = 0
24
- # define TIMER_START(name) int64_t name##_t0 = HAP_perf_get_qtimer_count()
25
- # define TIMER_STOP(name) name##_ticks += HAP_perf_get_qtimer_count() - name##_t0
26
- # define TIMER_US(name) HAP_perf_qtimer_count_to_us(name##_ticks)
27
- #else
28
- # define TIMER_DEFINE(name)
29
- # define TIMER_START(name)
30
- # define TIMER_STOP(name)
31
- # define TIMER_US(name) 0LL
32
- #endif
33
-
34
- #endif // HMX_PROFILE_H
@@ -1,16 +0,0 @@
1
- #ifndef VTCM_UTILS_H
2
- #define VTCM_UTILS_H
3
-
4
- #include "hex-utils.h"
5
-
6
- #include <assert.h>
7
- #include <stdint.h>
8
- #include <hexagon_types.h>
9
-
10
- static inline uint8_t *vtcm_seq_alloc(uint8_t **vtcm_ptr, size_t size) {
11
- uint8_t *p = *vtcm_ptr;
12
- *vtcm_ptr += size;
13
- return p;
14
- }
15
-
16
- #endif // VTCM_UTILS_H
@@ -1,25 +0,0 @@
1
- #include "../node_context.h"
2
- #include "../op_table.h"
3
- #include "../utils.h"
4
-
5
- #include <openvino/core/node_output.hpp>
6
- #include <openvino/op/gelu.hpp>
7
-
8
- namespace ov {
9
- namespace frontend {
10
- namespace ggml {
11
- namespace op {
12
-
13
- OutputVector translate_unary_gelu(const NodeContext & context) {
14
- num_inputs_check(context, 1, 1);
15
-
16
- auto input = context.get_input(0);
17
- auto res = std::make_shared<ov::op::v7::Gelu>(input);
18
-
19
- return rename_outputs_with_suffix({res}, context.get_name());
20
- }
21
-
22
- } // namespace op
23
- } // namespace ggml
24
- } // namespace frontend
25
- } // namespace ov
@@ -1,21 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- data_d[i] = D_TYPE(abs(float(data_a[i])));
21
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- data_d[i] = D_TYPE(ceil(x));
22
- }
@@ -1,17 +0,0 @@
1
- #version 450
2
-
3
- #include "types.glsl"
4
- #include "generic_unary_head.glsl"
5
-
6
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
7
-
8
- void main() {
9
- const uint idx = get_idx();
10
-
11
- if (idx >= p.ne) {
12
- return;
13
- }
14
-
15
- const FLOAT_TYPE val = FLOAT_TYPE(data_a[get_aoffset() + src0_idx(idx)]);
16
- data_d[get_doffset() + dst_idx(idx)] = D_TYPE(val < p.param1 ? p.param1 : (val > p.param2 ? p.param2 : val));
17
- }
@@ -1,17 +0,0 @@
1
- #version 450
2
-
3
- #include "types.glsl"
4
- #include "generic_unary_head.glsl"
5
-
6
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
7
-
8
- void main() {
9
- const uint idx = get_idx();
10
-
11
- if (idx >= p.ne) {
12
- return;
13
- }
14
-
15
- const FLOAT_TYPE val = FLOAT_TYPE(data_a[get_aoffset() + src0_idx(idx)]);
16
- data_d[get_doffset() + dst_idx(idx)] = D_TYPE(cos(val));
17
- }
@@ -1,27 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- float x = float(data_a[i]);
21
-
22
- if (x < 0.0f) {
23
- x = exp(x) - 1;
24
- }
25
-
26
- data_d[i] = D_TYPE(x);
27
- }
@@ -1,20 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
- data_d[i] = D_TYPE(exp(float(data_a[i])));
20
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- data_d[i] = D_TYPE(floor(x));
22
- }
@@ -1,25 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const float GELU_COEF_A = 0.044715f;
15
- const float SQRT_2_OVER_PI = 0.79788456080286535587989211986876f;
16
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
17
-
18
- if (i >= p.KX) {
19
- return;
20
- }
21
-
22
- const float xi = float(data_a[i]);
23
- const float val = SQRT_2_OVER_PI*xi*(1.0f + GELU_COEF_A*xi*xi);
24
- data_d[i] = D_TYPE(0.5f*xi*(2.0f - 2.0f / (exp(2 * val) + 1)));
25
- }
@@ -1,39 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- // based on Abramowitz and Stegun formula 7.1.26 or similar Hastings' approximation
15
- // ref: https://www.johndcook.com/blog/python_erf/
16
- const float p_erf = 0.3275911f;
17
- const float a1_erf = 0.254829592f;
18
- const float a2_erf = -0.284496736f;
19
- const float a3_erf = 1.421413741f;
20
- const float a4_erf = -1.453152027f;
21
- const float a5_erf = 1.061405429f;
22
-
23
- const float SQRT_2_INV = 0.70710678118654752440084436210484f;
24
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
25
-
26
- if (i >= p.KX) {
27
- return;
28
- }
29
-
30
- const float a = float(data_a[i]);
31
- const float a_div_sqr2 = a * SQRT_2_INV;
32
- const float sign_x = sign(a_div_sqr2);
33
- const float x = abs(a_div_sqr2);
34
- const float t = 1.0f / (1.0f + p_erf * x);
35
- const float y = 1.0f - (((((a5_erf * t + a4_erf) * t) + a3_erf) * t + a2_erf) * t + a1_erf) * t * exp(-x * x);
36
- const float erf_approx = sign_x * y;
37
-
38
- data_d[i] = D_TYPE(0.5f * a * (1.0f + erf_approx));
39
- }
@@ -1,23 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const float GELU_QUICK_COEF = -1.702f;
15
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
16
-
17
- if (i >= p.KX) {
18
- return;
19
- }
20
-
21
- const float x = float(data_a[i]);
22
- data_d[i] = D_TYPE(x * (1.0f / (1.0f + exp(GELU_QUICK_COEF * x))));
23
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- data_d[i] = D_TYPE(min(1.0f, max(0.0f, (x + 3.0f) / 6.0f)));
22
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- data_d[i] = D_TYPE(x * min(1.0f, max(0.0f, (x + 3.0f) / 6.0f)));
22
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float val = float(data_a[i]);
21
- data_d[i] = D_TYPE(max(val, 0.0f) + min(val, 0.0f) * p.param1);
22
- }
@@ -1,20 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
- data_d[i] = D_TYPE(-float(data_a[i]));
20
- }
@@ -1,21 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- data_d[i] = D_TYPE(max(float(data_a[i]), 0));
21
- }
@@ -1,29 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- float result;
22
- // Round halfway cases away from zero as roundf does.
23
- if (x >= 0.0) {
24
- result = floor(x + 0.5);
25
- } else {
26
- result = ceil(x - 0.5);
27
- }
28
- data_d[i] = D_TYPE(result);
29
- }
@@ -1,21 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- data_d[i] = D_TYPE(sign(float(data_a[i])));
21
- }
@@ -1,20 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
- data_d[i] = D_TYPE(1. / (1 + exp(-1. * float(data_a[i]))));
20
- }
@@ -1,22 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float xi = float(data_a[i]);
21
- data_d[i] = D_TYPE(xi / (1.0f + exp(-xi)));
22
- }
@@ -1,17 +0,0 @@
1
- #version 450
2
-
3
- #include "types.glsl"
4
- #include "generic_unary_head.glsl"
5
-
6
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
7
-
8
- void main() {
9
- const uint idx = get_idx();
10
-
11
- if (idx >= p.ne) {
12
- return;
13
- }
14
-
15
- const FLOAT_TYPE val = FLOAT_TYPE(data_a[get_aoffset() + src0_idx(idx)]);
16
- data_d[get_doffset() + dst_idx(idx)] = D_TYPE(sin(val));
17
- }
@@ -1,23 +0,0 @@
1
- #version 450
2
-
3
- #include "generic_head.glsl"
4
- #include "types.glsl"
5
-
6
- #extension GL_EXT_control_flow_attributes : enable
7
-
8
- layout(local_size_x = 512, local_size_y = 1, local_size_z = 1) in;
9
-
10
- layout (binding = 0) readonly buffer X {A_TYPE data_a[];};
11
- layout (binding = 1) writeonly buffer D {D_TYPE data_d[];};
12
-
13
- void main() {
14
- const uint i = gl_GlobalInvocationID.z * 262144 + gl_GlobalInvocationID.y * 512 + gl_GlobalInvocationID.x;
15
-
16
- if (i >= p.KX) {
17
- return;
18
- }
19
-
20
- const float x = float(data_a[i]);
21
- const float result = (x > 20.0f) ? x : log(1.0f + exp(x));
22
- data_d[i] = D_TYPE(result);
23
- }