cumo 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +590 -152
  3. data/CHANGELOG.md +73 -2
  4. data/README.md +273 -0
  5. data/bench/cumo_probe.rb +1 -1
  6. data/bench/cumo_sync_probe.rb +71 -8
  7. data/cumo.gemspec +1 -1
  8. data/ext/cumo/cuda/cublas.c +0 -40
  9. data/ext/cumo/cuda/cudnn.c +66 -0
  10. data/ext/cumo/cuda/cudnn_impl.cpp +148 -73
  11. data/ext/cumo/cuda/driver.c +11 -9
  12. data/ext/cumo/cuda/runtime.c +59 -4
  13. data/ext/cumo/cumo.c +38 -0
  14. data/ext/cumo/extconf.rb +4 -0
  15. data/ext/cumo/include/cumo/bit_reduce_kernel.h +6 -6
  16. data/ext/cumo/include/cumo/cuda/cudnn.h +61 -2
  17. data/ext/cumo/include/cumo/cuda/cumo_thrust.hpp +1 -0
  18. data/ext/cumo/include/cumo/cuda/runtime.h +30 -0
  19. data/ext/cumo/include/cumo/intern.h +13 -1
  20. data/ext/cumo/include/cumo/narray.h +60 -3
  21. data/ext/cumo/include/cumo/reduce_kernel.h +32 -28
  22. data/ext/cumo/include/cumo/row_kernel.h +170 -0
  23. data/ext/cumo/include/cumo/row_method.h +48 -0
  24. data/ext/cumo/include/cumo/template.h +35 -10
  25. data/ext/cumo/include/cumo/template_kernel.h +122 -0
  26. data/ext/cumo/include/cumo/types/bf16_def.h +82 -0
  27. data/ext/cumo/include/cumo/types/bf16_def_kernel.h +28 -0
  28. data/ext/cumo/include/cumo/types/bf16_macro.h +186 -0
  29. data/ext/cumo/include/cumo/types/bf16_macro_kernel.h +213 -0
  30. data/ext/cumo/include/cumo/types/bfloat.h +22 -0
  31. data/ext/cumo/include/cumo/types/bfloat_kernel.h +16 -0
  32. data/ext/cumo/include/cumo/types/bit.h +5 -0
  33. data/ext/cumo/include/cumo/types/bit_kernel.h +5 -0
  34. data/ext/cumo/include/cumo/types/complex_macro.h +4 -0
  35. data/ext/cumo/include/cumo/types/complex_macro_kernel.h +4 -0
  36. data/ext/cumo/include/cumo/types/float_def.h +8 -0
  37. data/ext/cumo/include/cumo/types/float_def_kernel.h +8 -0
  38. data/ext/cumo/include/cumo/types/float_macro.h +21 -17
  39. data/ext/cumo/include/cumo/types/float_macro_kernel.h +21 -19
  40. data/ext/cumo/include/cumo/types/half_def.h +129 -0
  41. data/ext/cumo/include/cumo/types/half_def_kernel.h +28 -0
  42. data/ext/cumo/include/cumo/types/half_macro.h +186 -0
  43. data/ext/cumo/include/cumo/types/half_macro_kernel.h +213 -0
  44. data/ext/cumo/include/cumo/types/hfloat.h +22 -0
  45. data/ext/cumo/include/cumo/types/hfloat_kernel.h +16 -0
  46. data/ext/cumo/include/cumo/types/real_accum.h +2 -0
  47. data/ext/cumo/include/cumo/types/real_accum_kernel.h +2 -0
  48. data/ext/cumo/include/cumo/types/robj_macro.h +5 -0
  49. data/ext/cumo/include/cumo/types/xint_macro.h +5 -6
  50. data/ext/cumo/include/cumo/types/xint_macro_kernel.h +4 -0
  51. data/ext/cumo/include/cumo.h +2 -2
  52. data/ext/cumo/narray/data.c +49 -174
  53. data/ext/cumo/narray/gen/def/bfloat.rb +56 -0
  54. data/ext/cumo/narray/gen/def/bit.rb +12 -0
  55. data/ext/cumo/narray/gen/def/dcomplex.rb +12 -0
  56. data/ext/cumo/narray/gen/def/dfloat.rb +17 -0
  57. data/ext/cumo/narray/gen/def/hfloat.rb +56 -0
  58. data/ext/cumo/narray/gen/def/int16.rb +12 -0
  59. data/ext/cumo/narray/gen/def/int32.rb +12 -0
  60. data/ext/cumo/narray/gen/def/int64.rb +12 -0
  61. data/ext/cumo/narray/gen/def/int8.rb +12 -0
  62. data/ext/cumo/narray/gen/def/robject.rb +12 -0
  63. data/ext/cumo/narray/gen/def/scomplex.rb +12 -0
  64. data/ext/cumo/narray/gen/def/sfloat.rb +17 -0
  65. data/ext/cumo/narray/gen/def/uint16.rb +13 -1
  66. data/ext/cumo/narray/gen/def/uint32.rb +13 -1
  67. data/ext/cumo/narray/gen/def/uint64.rb +12 -0
  68. data/ext/cumo/narray/gen/def/uint8.rb +13 -1
  69. data/ext/cumo/narray/gen/erbpp2.rb +6 -0
  70. data/ext/cumo/narray/gen/narray_def.rb +0 -5
  71. data/ext/cumo/narray/gen/spec.rb +12 -14
  72. data/ext/cumo/narray/gen/tmpl/accum.c +1 -1
  73. data/ext/cumo/narray/gen/tmpl/accum_arg.c +2 -2
  74. data/ext/cumo/narray/gen/tmpl/accum_arg_kernel.cu +5 -5
  75. data/ext/cumo/narray/gen/tmpl/accum_binary_kernel.cu +14 -1
  76. data/ext/cumo/narray/gen/tmpl/accum_index.c +2 -2
  77. data/ext/cumo/narray/gen/tmpl/accum_index_kernel.cu +5 -5
  78. data/ext/cumo/narray/gen/tmpl/alloc_func.c +4 -7
  79. data/ext/cumo/narray/gen/tmpl/allocate.c +1 -2
  80. data/ext/cumo/narray/gen/tmpl/aref_cpu.c +1 -1
  81. data/ext/cumo/narray/gen/tmpl/batch_norm.c +14 -26
  82. data/ext/cumo/narray/gen/tmpl/batch_norm_backward.c +15 -27
  83. data/ext/cumo/narray/gen/tmpl/binary_kernel.cu +69 -2
  84. data/ext/cumo/narray/gen/tmpl/clip.c +3 -3
  85. data/ext/cumo/narray/gen/tmpl/complex_accum_kernel.cu +15 -5
  86. data/ext/cumo/narray/gen/tmpl/cond_unary.c +1 -1
  87. data/ext/cumo/narray/gen/tmpl/conv.c +88 -127
  88. data/ext/cumo/narray/gen/tmpl/conv_grad_w.c +89 -87
  89. data/ext/cumo/narray/gen/tmpl/conv_transpose.c +88 -127
  90. data/ext/cumo/narray/gen/tmpl/cum.c +25 -1
  91. data/ext/cumo/narray/gen/tmpl/cum_kernel.cu +30 -4
  92. data/ext/cumo/narray/gen/tmpl/each.c +2 -3
  93. data/ext/cumo/narray/gen/tmpl/each_with_index.c +5 -21
  94. data/ext/cumo/narray/gen/tmpl/extract_cpu.c +1 -1
  95. data/ext/cumo/narray/gen/tmpl/extract_data.c +1 -1
  96. data/ext/cumo/narray/gen/tmpl/fill.c +1 -1
  97. data/ext/cumo/narray/gen/tmpl/fixed_batch_norm.c +12 -24
  98. data/ext/cumo/narray/gen/tmpl/float_accum_kernel.cu +59 -42
  99. data/ext/cumo/narray/gen/tmpl/format.c +1 -1
  100. data/ext/cumo/narray/gen/tmpl/format_to_a.c +1 -1
  101. data/ext/cumo/narray/gen/tmpl/gemm.c +77 -50
  102. data/ext/cumo/narray/gen/tmpl/init_class.c +0 -7
  103. data/ext/cumo/narray/gen/tmpl/init_upcast.c +6 -0
  104. data/ext/cumo/narray/gen/tmpl/inspect.c +1 -1
  105. data/ext/cumo/narray/gen/tmpl/layer_norm.c +91 -0
  106. data/ext/cumo/narray/gen/tmpl/layer_norm_kernel.cu +54 -0
  107. data/ext/cumo/narray/gen/tmpl/lib.c +12 -1
  108. data/ext/cumo/narray/gen/tmpl/lib_kernel.cu +1 -0
  109. data/ext/cumo/narray/gen/tmpl/map_with_index.c +7 -14
  110. data/ext/cumo/narray/gen/tmpl/median.c +10 -48
  111. data/ext/cumo/narray/gen/tmpl/minmax.c +1 -1
  112. data/ext/cumo/narray/gen/tmpl/poly.c +0 -3
  113. data/ext/cumo/narray/gen/tmpl/poly_kernel.cu +1 -1
  114. data/ext/cumo/narray/gen/tmpl/pooling_backward.c +4 -15
  115. data/ext/cumo/narray/gen/tmpl/pooling_forward.c +4 -15
  116. data/ext/cumo/narray/gen/tmpl/rand.c +20 -2
  117. data/ext/cumo/narray/gen/tmpl/rand_kernel.cu +13 -0
  118. data/ext/cumo/narray/gen/tmpl/rand_norm.c +4 -4
  119. data/ext/cumo/narray/gen/tmpl/rand_norm_kernel.cu +7 -5
  120. data/ext/cumo/narray/gen/tmpl/real_accum_kernel.cu +85 -99
  121. data/ext/cumo/narray/gen/tmpl/softmax.c +56 -0
  122. data/ext/cumo/narray/gen/tmpl/softmax_kernel.cu +157 -0
  123. data/ext/cumo/narray/gen/tmpl/sort.c +9 -32
  124. data/ext/cumo/narray/gen/tmpl/sort_index.c +16 -92
  125. data/ext/cumo/narray/gen/tmpl/store_array.c +33 -31
  126. data/ext/cumo/narray/gen/tmpl/store_bit.c +1 -1
  127. data/ext/cumo/narray/gen/tmpl/store_from.c +1 -1
  128. data/ext/cumo/narray/gen/tmpl/store_from_kernel.cu +37 -2
  129. data/ext/cumo/narray/gen/tmpl/to_a.c +1 -1
  130. data/ext/cumo/narray/gen/tmpl/unary.c +20 -3
  131. data/ext/cumo/narray/gen/tmpl/unary2.c +1 -1
  132. data/ext/cumo/narray/gen/tmpl/unary_s.c +1 -1
  133. data/ext/cumo/narray/gen/tmpl_bit/allocate.c +2 -3
  134. data/ext/cumo/narray/gen/tmpl_bit/aref_cpu.c +1 -1
  135. data/ext/cumo/narray/gen/tmpl_bit/bit_count_cpu.c +1 -1
  136. data/ext/cumo/narray/gen/tmpl_bit/each.c +2 -2
  137. data/ext/cumo/narray/gen/tmpl_bit/each_with_index.c +5 -20
  138. data/ext/cumo/narray/gen/tmpl_bit/extract_cpu.c +1 -1
  139. data/ext/cumo/narray/gen/tmpl_bit/format.c +1 -1
  140. data/ext/cumo/narray/gen/tmpl_bit/format_to_a.c +1 -1
  141. data/ext/cumo/narray/gen/tmpl_bit/inspect.c +1 -1
  142. data/ext/cumo/narray/gen/tmpl_bit/mask.c +42 -21
  143. data/ext/cumo/narray/gen/tmpl_bit/mask_kernel.cu +4 -4
  144. data/ext/cumo/narray/gen/tmpl_bit/store_array.c +15 -20
  145. data/ext/cumo/narray/gen/tmpl_bit/store_from.c +1 -1
  146. data/ext/cumo/narray/gen/tmpl_bit/to_a.c +1 -1
  147. data/ext/cumo/narray/gen/tmpl_bit/where.c +109 -17
  148. data/ext/cumo/narray/gen/tmpl_bit/where2.c +59 -23
  149. data/ext/cumo/narray/gen/tmpl_bit/where_kernel.cu +7 -8
  150. data/ext/cumo/narray/index.c +65 -19
  151. data/ext/cumo/narray/index_kernel.cu +15 -0
  152. data/ext/cumo/narray/math.c +4 -0
  153. data/ext/cumo/narray/narray.c +316 -184
  154. data/ext/cumo/narray/ndloop.c +164 -30
  155. data/ext/cumo/narray/sort_kernel.cu +97 -56
  156. data/ext/cumo/narray/struct.c +17 -17
  157. data/lib/cumo/cuda/cudnn.rb +1 -1
  158. data/lib/cumo/narray/extra.rb +11 -2
  159. data/test/bfloat_test.rb +238 -0
  160. data/test/bit_test.rb +147 -0
  161. data/test/cuda/memory_pool_test.rb +8 -7
  162. data/test/cuda/runtime_test.rb +25 -0
  163. data/test/cudnn_test.rb +216 -46
  164. data/test/extra_test.rb +1 -1
  165. data/test/fused_test.rb +311 -0
  166. data/test/hfloat_test.rb +717 -0
  167. data/test/math_test.rb +79 -1
  168. data/test/narray_alt_coverage_test.rb +8 -0
  169. data/test/narray_test.rb +1086 -19
  170. data/test/test_helper.rb +74 -0
  171. metadata +30 -4
  172. data/ext/cumo/narray/gen/tmpl/qsort.c +0 -206
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d6b3e0decf69d07199a7930dc6a23d1a05a90ed044cf007203c78c28a8e9ea1
4
- data.tar.gz: dec0ca1f195b302919d30085fcc139911299ba075193b67cab9965907210092f
3
+ metadata.gz: 695bd66c93bd2511f905d74cf242a7d2d7d0ac4aea8f5915fb722e013e658e9a
4
+ data.tar.gz: fa51db7ef5f01745ded6d71834bde62fa238fb92cba9bb358374293a18b7577b
5
5
  SHA512:
6
- metadata.gz: e4f8d6204fca59288efad1ab5dec228d474de02ee3465f89afe7fc7440b456b0d46b78c92fb1e48e92063a2b3c385dedb8955aed3ddfa4411c13beb2f32a5417
7
- data.tar.gz: a397b427534b829b13f8bd4a4d6f8616d918bde834dc5c69a5611671ec942796d8615bd74d2564a2c3cd6cdaf9e572f4599e0704071f21a3c40394d0236b148d
6
+ metadata.gz: fbad56229183188dc36b2341105a68a5ca670de3a86ac9d50887544bebf4200e80c0f571783aefe24657c609aa86bc3f6af0da8d5943b56c0c91031ea7c22244
7
+ data.tar.gz: a5a3e9cfa2e99873b3e7f555fec3e397ed8c9814fbd0255ccc2e0cd52ac9d337fd654741a00412f1b0eb46a777ed346fa46ae98c7e4bf45ce0d7eb8de964fa75